Files
thejinchao.github.io/note/graphics/math/transform_03.html
T

44 lines
54 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.19" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme='dark'] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background-color: var(--vp-c-bg);
}
</style>
<script>
const useChoice = localStorage.getItem('vuepress-color-scheme')
const systemStatus =
'matchMedia' in window
? window.matchMedia('(prefers-color-scheme: dark)').matches
: false
if (useChoice === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (useChoice === 'dark' || systemStatus) {
document.documentElement.dataset.theme = 'dark'
}
</script>
<title>几何变换(三) | 我的博客和笔记</title><meta name="description" content="理性派,数学,物理,程序">
<link rel="preload" href="/assets/style-Bs7SmLUV.css" as="style"><link rel="stylesheet" href="/assets/style-Bs7SmLUV.css">
<link rel="modulepreload" href="/assets/app-DDhCkyt5.js"><link rel="modulepreload" href="/assets/transform_03.html-Db3w7qxs.js">
<link rel="prefetch" href="/assets/about.html-DjRPn6ER.js" as="script"><link rel="prefetch" href="/assets/index.html-ByhSNFKE.js" as="script"><link rel="prefetch" href="/assets/index.html-Ce-1bCo8.js" as="script"><link rel="prefetch" href="/assets/index.html-DSv2mZMp.js" as="script"><link rel="prefetch" href="/assets/flip_coin.html-DL8uzTi-.js" as="script"><link rel="prefetch" href="/assets/index.html-DpL5vJQq.js" as="script"><link rel="prefetch" href="/assets/mental_poker.html-B7-2volk.js" as="script"><link rel="prefetch" href="/assets/rsa.html-DlNUFTye.js" as="script"><link rel="prefetch" href="/assets/index.html-ZZlUCSTR.js" as="script"><link rel="prefetch" href="/assets/index.html-CObVRk6K.js" as="script"><link rel="prefetch" href="/assets/group.html-DK_JEi2E.js" as="script"><link rel="prefetch" href="/assets/index.html-CSCfhxkt.js" as="script"><link rel="prefetch" href="/assets/number_theory_1.html-DhDrD2kG.js" as="script"><link rel="prefetch" href="/assets/number_theory_2.html-DZP6Wu2m.js" as="script"><link rel="prefetch" href="/assets/number_theory_3.html-Dshh7Y8i.js" as="script"><link rel="prefetch" href="/assets/probability.html-C9-Zf5Tu.js" as="script"><link rel="prefetch" href="/assets/symbol.html-DNWjZbR6.js" as="script"><link rel="prefetch" href="/assets/DH.html-D30-0uAg.js" as="script"><link rel="prefetch" href="/assets/Ellipse.html-CWnkVO2j.js" as="script"><link rel="prefetch" href="/assets/Fibonacci.html-DKF_-wj-.js" as="script"><link rel="prefetch" href="/assets/JPEG001.html-DVjS_-ix.js" as="script"><link rel="prefetch" href="/assets/JPEG002.html-XdHcqhxR.js" as="script"><link rel="prefetch" href="/assets/JPEG003.html-CPJZr3dK.js" as="script"><link rel="prefetch" href="/assets/JPEG004.html-B6tAsxli.js" as="script"><link rel="prefetch" href="/assets/JPEG005.html-DY2HbkzF.js" as="script"><link rel="prefetch" href="/assets/Martingle.html-j0sD60Zg.js" as="script"><link rel="prefetch" href="/assets/MentalPoker01.html-D7I09CPK.js" as="script"><link rel="prefetch" href="/assets/MentalPoker02.html-BUuJfOTc.js" as="script"><link rel="prefetch" href="/assets/RandRound.html-uKm7RdBk.js" as="script"><link rel="prefetch" href="/assets/SPH001.html-Zi-KP04S.js" as="script"><link rel="prefetch" href="/assets/SPH002.html-3IkBQBEV.js" as="script"><link rel="prefetch" href="/assets/SPH003.html-Z7aNa78Q.js" as="script"><link rel="prefetch" href="/assets/SPH004.html-CMkN5952.js" as="script"><link rel="prefetch" href="/assets/SegmentCircle.html-NbmEdi8u.js" as="script"><link rel="prefetch" href="/assets/index.html-DOrU3tKs.js" as="script"><link rel="prefetch" href="/assets/ibl_01.html-P7QXSkBu.js" as="script"><link rel="prefetch" href="/assets/ibl_02.html-CY-F_Bno.js" as="script"><link rel="prefetch" href="/assets/index.html-DlFDMo9J.js" as="script"><link rel="prefetch" href="/assets/index.html-BQtaiX90.js" as="script"><link rel="prefetch" href="/assets/math_01.html-IrcRXfCC.js" as="script"><link rel="prefetch" href="/assets/math_02.html-DcqNHdj_.js" as="script"><link rel="prefetch" href="/assets/math_03.html-DUHsPWor.js" as="script"><link rel="prefetch" href="/assets/transform_01.html-DmYRcYAG.js" as="script"><link rel="prefetch" href="/assets/transform_02.html-DVyq9nPx.js" as="script"><link rel="prefetch" href="/assets/transform_04.html-h4LbPJz3.js" as="script"><link rel="prefetch" href="/assets/function.html-D_t-6oJV.js" as="script"><link rel="prefetch" href="/assets/grammar.html-QqC7cYGD.js" as="script"><link rel="prefetch" href="/assets/helloworld.html-DZD_sFKM.js" as="script"><link rel="prefetch" href="/assets/index.html-DaR6Hhwb.js" as="script"><link rel="prefetch" href="/assets/object_and_class.html-B1vfX41z.js" as="script"><link rel="prefetch" href="/assets/BRDF.html-BljMBIBd.js" as="script"><link rel="prefetch" href="/assets/illumination_model_01.html-Cq9ajXli.js" as="script"><link rel="prefetch" href="/assets/luminosity.html-BOAC9vlF.js" as="script"><link rel="prefetch" href="/assets/microfacets_1.html-gFuCpUaJ.js" as="script"><link rel="prefetch" href="/assets/microfacets_2.html-C5fTNrnO.js" as="script"><link rel="prefetch" href="/assets/microfacets_3.html-CqfzWkM9.js" as="script"><link rel="prefetch" href="/assets/render_function_1.html-CWpZuOCJ.js" as="script"><link rel="prefetch" href="/assets/404.html-BEnbJqBR.js" as="script"><link rel="prefetch" href="/assets/setupDevtools-7MC2TMWH-BCCtf40a.js" as="script">
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><img class="vp-site-logo" src="/favicon.png" alt="我的博客和笔记"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">我的博客和笔记</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/blog/" aria-label="文章"><!--[--><!--[--><!--]--><!--]-->文章<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/turbolink" aria-label="TurboLink" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TurboLink<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/math/" aria-label="数学相关"><!--[--><!--[--><!--]--><!--]-->数学相关<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/note/graphics/" aria-label="图形学"><!--[--><!--[--><!--]--><!--]-->图形学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/cryptography/" aria-label="密码学"><!--[--><!--[--><!--]--><!--]-->密码学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/language/" aria-label="编程语言"><!--[--><!--[--><!--]--><!--]-->编程语言<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/about.html" aria-label="关于"><!--[--><!--[--><!--]--><!--]-->关于<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/blog/" aria-label="文章"><!--[--><!--[--><!--]--><!--]-->文章<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/turbolink" aria-label="TurboLink" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TurboLink<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/math/" aria-label="数学相关"><!--[--><!--[--><!--]--><!--]-->数学相关<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/note/graphics/" aria-label="图形学"><!--[--><!--[--><!--]--><!--]-->图形学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/cryptography/" aria-label="密码学"><!--[--><!--[--><!--]--><!--]-->密码学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/language/" aria-label="编程语言"><!--[--><!--[--><!--]--><!--]-->编程语言<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/about.html" aria-label="关于"><!--[--><!--[--><!--]--><!--]-->关于<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="vp-sidebar-items"><!--[--><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading collapsible">我的文章 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">从抛币协议到智能合约 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/MentalPoker01.html" aria-label="Part1"><!--[--><!--[--><!--]--><!--]-->Part1<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/MentalPoker02.html" aria-label="Part2"><!--[--><!--[--><!--]--><!--]-->Part2<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">JPEG算法解密 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG001.html" aria-label="Part1"><!--[--><!--[--><!--]--><!--]-->Part1<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG002.html" aria-label="Part2"><!--[--><!--[--><!--]--><!--]-->Part2<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG003.html" aria-label="Part3"><!--[--><!--[--><!--]--><!--]-->Part3<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG004.html" aria-label="Part4"><!--[--><!--[--><!--]--><!--]-->Part4<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG005.html" aria-label="Part5"><!--[--><!--[--><!--]--><!--]-->Part5<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="http://github.com/thejinchao/jpeg_encoder" aria-label="Github" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Github<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">SPH算法简介 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH001.html" aria-label="Part1"><!--[--><!--[--><!--]--><!--]-->Part1<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH002.html" aria-label="Part2"><!--[--><!--[--><!--]--><!--]-->Part2<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH003.html" aria-label="Part3"><!--[--><!--[--><!--]--><!--]-->Part3<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH004.html" aria-label="Part4"><!--[--><!--[--><!--]--><!--]-->Part4<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/fluid" aria-label="Github" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Github<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/Martingle.html" aria-label="赌博中的数学:Martingle策略"><!--[--><!--[--><!--]--><!--]-->赌博中的数学:Martingle策略<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/RandRound.html" aria-label="如何生成一个随机的圆形"><!--[--><!--[--><!--]--><!--]-->如何生成一个随机的圆形<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/DH.html" aria-label="一个简单的DH密钥协商算法的实现"><!--[--><!--[--><!--]--><!--]-->一个简单的DH密钥协商算法的实现<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SegmentCircle.html" aria-label="如何计算线段和圆的交点"><!--[--><!--[--><!--]--><!--]-->如何计算线段和圆的交点<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/Ellipse.html" aria-label="一道数学趣题"><!--[--><!--[--><!--]--><!--]-->一道数学趣题<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/Fibonacci.html" aria-label="斐波那契数列和1/89"><!--[--><!--[--><!--]--><!--]-->斐波那契数列和1/89<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading collapsible">开源项目 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/turbolink" aria-label="TurboLink" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TurboLink<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading active collapsible">学习笔记 <span class="down arrow"></span></p><ul style="" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">数学相关 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/symbol.html" aria-label="常用数学符号"><!--[--><!--[--><!--]--><!--]-->常用数学符号<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/group.html" aria-label="群"><!--[--><!--[--><!--]--><!--]-->群<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/number_theory_1.html" aria-label="数论(一)"><!--[--><!--[--><!--]--><!--]-->数论(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/number_theory_2.html" aria-label="数论(二)"><!--[--><!--[--><!--]--><!--]-->数论(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/number_theory_3.html" aria-label="数论(三)"><!--[--><!--[--><!--]--><!--]-->数论(三)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/probability.html" aria-label="概率"><!--[--><!--[--><!--]--><!--]-->概率<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">密码学 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/cryptography/rsa.html" aria-label="RSA"><!--[--><!--[--><!--]--><!--]-->RSA<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/cryptography/flip_coin.html" aria-label="抛币协议"><!--[--><!--[--><!--]--><!--]-->抛币协议<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/cryptography/mental_poker.html" aria-label="智能扑克协议"><!--[--><!--[--><!--]--><!--]-->智能扑克协议<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item active collapsible">图形学 <span class="down arrow"></span></p><ul style="" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item active collapsible">数学基础 <span class="down arrow"></span></p><ul style="" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/math_01.html" aria-label="矢量"><!--[--><!--[--><!--]--><!--]-->矢量<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/math_02.html" aria-label="矩阵"><!--[--><!--[--><!--]--><!--]-->矩阵<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/math_03.html" aria-label="立体角"><!--[--><!--[--><!--]--><!--]-->立体角<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_01.html" aria-label="几何变换(一)"><!--[--><!--[--><!--]--><!--]-->几何变换(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_02.html" aria-label="几何变换(二)"><!--[--><!--[--><!--]--><!--]-->几何变换(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link route-link-active auto-link vp-sidebar-item active" href="/note/graphics/math/transform_03.html" aria-label="法线变换"><!--[--><!--[--><!--]--><!--]-->法线变换<!--[--><!--[--><!--]--><!--]--></a><ul style="" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="#_7-法线变换" aria-label="7. 法线变换"><!--[--><!--[--><!--]--><!--]-->7. 法线变换<!--[--><!--[--><!--]--><!--]--></a><ul style="" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="#_7-1-举例" aria-label="7.1 举例"><!--[--><!--[--><!--]--><!--]-->7.1 举例<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="#_7-2-法线变换矩阵" aria-label="7.2 法线变换矩阵"><!--[--><!--[--><!--]--><!--]-->7.2 法线变换矩阵<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_04.html" aria-label="摄像机变换"><!--[--><!--[--><!--]--><!--]-->摄像机变换<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">光照模型 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/classic/illumination_model_01.html" aria-label="传统光照模型"><!--[--><!--[--><!--]--><!--]-->传统光照模型<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/luminosity/luminosity.html" aria-label="光度学"><!--[--><!--[--><!--]--><!--]-->光度学<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/BRDF/BRDF.html" aria-label="双向反射分布函数(BRDF)"><!--[--><!--[--><!--]--><!--]-->双向反射分布函数(BRDF)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/microfacets/microfacets_1.html" aria-label="微平面理论(一)"><!--[--><!--[--><!--]--><!--]-->微平面理论(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/microfacets/microfacets_2.html" aria-label="微平面理论(二)"><!--[--><!--[--><!--]--><!--]-->微平面理论(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/microfacets/microfacets_3.html" aria-label="微平面理论(三)"><!--[--><!--[--><!--]--><!--]-->微平面理论(三)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/render_function/render_function_1.html" aria-label="光照方程"><!--[--><!--[--><!--]--><!--]-->光照方程<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">环境光渲染 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/image_based_lighting/ibl_01.html" aria-label="环境光渲染(一)"><!--[--><!--[--><!--]--><!--]-->环境光渲染(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/image_based_lighting/ibl_02.html" aria-label="环境光渲染(二)"><!--[--><!--[--><!--]--><!--]-->环境光渲染(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">编程语言 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">JavaScript <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/helloworld.html" aria-label="环境搭建"><!--[--><!--[--><!--]--><!--]-->环境搭建<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/grammar.html" aria-label="基本语法"><!--[--><!--[--><!--]--><!--]-->基本语法<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/function.html" aria-label="函数"><!--[--><!--[--><!--]--><!--]-->函数<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/object_and_class.html" aria-label="对象和类"><!--[--><!--[--><!--]--><!--]-->对象和类<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div><h1 id="几何变换-三" tabindex="-1"><a class="header-anchor" href="#几何变换-三"><span>几何变换(三)</span></a></h1><hr><h2 id="_7-法线变换" tabindex="-1"><a class="header-anchor" href="#_7-法线变换"><span>7. 法线变换</span></a></h2><p>做几何变换时,法线比较特殊,需要保证法线经过变换之后仍然垂直于原先的切平面,如果使用和顶点变换相同的变换,无法保证这一点</p><h3 id="_7-1-举例" tabindex="-1"><a class="header-anchor" href="#_7-1-举例"><span>7.1 举例</span></a></h3><figure><img src="/assets/transform_normal-BoPThMlc.svg" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>如图,线段ab经过放缩变换之后成为a&#39;b&#39;,但法线经过同样的放缩矩阵变换之后发生错误,实际法线需要另外的矩阵计算</p><h3 id="_7-2-法线变换矩阵" tabindex="-1"><a class="header-anchor" href="#_7-2-法线变换矩阵"><span>7.2 法线变换矩阵</span></a></h3><p>以上图为例,设<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.372em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D496 TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-TeXAtom space="4" texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.479em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mrow><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-mrow></mjx-base></mjx-mover></mjx-TeXAtom></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">u</mi><mo stretchy="false">→</mo></mover></mrow><mo>=</mo><mrow data-mjx-texclass="ORD"><mover><mrow><mi>a</mi><mi>b</mi></mrow><mo stretchy="false">→</mo></mover></mrow></math></mjx-assistive-mml></mjx-container>,那么<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.372em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D496 TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-mo class="mjx-n" space="3"><mjx-c class="mjx-c22C5"></mjx-c></mjx-mo><mjx-TeXAtom space="3" texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.356em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D48F TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c30"></mjx-c></mjx-mn></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">u</mi><mo stretchy="false">→</mo></mover></mrow><mo>⋅</mo><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">n</mi><mo stretchy="false">→</mo></mover></mrow><mo>=</mo><mn>0</mn></math></mjx-assistive-mml></mjx-container>,用矩阵的方式表达,<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c5B"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D462 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D462 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D462 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D467 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c5D"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">u</mi></mrow><mo>=</mo><mo stretchy="false">[</mo><msub><mi>u</mi><mi>x</mi></msub><mo>,</mo><msub><mi>u</mi><mi>y</mi></msub><mo>,</mo><msub><mi>u</mi><mi>z</mi></msub><mo stretchy="false">]</mo></math></mjx-assistive-mml></mjx-container>, <mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c5B"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D467 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c5D"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">n</mi></mrow><mo>=</mo><mo stretchy="false">[</mo><msub><mi>n</mi><mi>x</mi></msub><mo>,</mo><msub><mi>n</mi><mi>y</mi></msub><mo>,</mo><msub><mi>n</mi><mi>z</mi></msub><mo stretchy="false">]</mo></math></mjx-assistive-mml></mjx-container>,就是<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-msup><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-script style="vertical-align:0.363em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c30"></mjx-c></mjx-mn></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">u</mi></mrow><msup><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">n</mi></mrow><mi>T</mi></msup><mo>=</mo><mn>0</mn></math></mjx-assistive-mml></mjx-container> 设从<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.479em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mrow><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-mrow></mjx-base></mjx-mover></mjx-TeXAtom></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mover><mrow><mi>a</mi><mi>b</mi></mrow><mo stretchy="false">→</mo></mover></mrow></math></mjx-assistive-mml></mjx-container>到<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.756em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mrow><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.289em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.289em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-mrow></mjx-base></mjx-mover></mjx-TeXAtom></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow data-mjx-texclass="ORD"><mover><mrow><msup><mi>a</mi><mo data-mjx-alternate="1">′</mo></msup><msup><mi>b</mi><mo data-mjx-alternate="1">′</mo></msup></mrow><mo stretchy="false">→</mo></mover></mrow></math></mjx-assistive-mml></mjx-container>的变换矩阵为<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D434 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>A</mi></math></mjx-assistive-mml></mjx-container>,根据转置矩阵的<a class="route-link" href="/note/graphics/math/math_02.html#_3-5-%E5%9F%BA%E6%9C%AC%E8%BF%90%E7%AE%97%E8%A7%84%E5%88%99">基本运算规则</a> ,可以得到</p><mjx-container class="MathJax" jax="CHTML" display="true" style="position:relative;"><mjx-math display="true" style="margin-left:0;margin-right:0;" class="MJX-TEX" aria-hidden="true"><mjx-mtable style="min-width:9.521em;"><mjx-table><mjx-itable><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-bottom:0.15em;"><mjx-mn class="mjx-n"><mjx-c class="mjx-c30"></mjx-c></mjx-mn><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-bottom:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-TeXAtom space="4" texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-msup><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-TeXAtom space="4" texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-msup><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c><mjx-c class="mjx-c41"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.443em;"><mjx-TeXAtom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-TeXAtom></mjx-script></mjx-msup></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-msup><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-msup><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.413em;"><mjx-TeXAtom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-TeXAtom></mjx-script></mjx-msup><mjx-msup><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-n" size="s"><mjx-c class="mjx-c54"></mjx-c></mjx-mi></mjx-script></mjx-msup></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-msup><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.413em;"><mjx-TeXAtom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-TeXAtom></mjx-script></mjx-msup><mjx-msup><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-n" size="s"><mjx-c class="mjx-c54"></mjx-c></mjx-mi></mjx-script></mjx-msup></mjx-TeXAtom><mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c75"></mjx-c><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c6E"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msup><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.413em;"><mjx-TeXAtom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-TeXAtom></mjx-script></mjx-msup><mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-n" size="s"><mjx-c class="mjx-c54"></mjx-c></mjx-mi></mjx-script></mjx-msup></mjx-TeXAtom><mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-top:0.15em;padding-bottom:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.372em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D496 TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="3"><mjx-c class="mjx-c22C5"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="3"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.356em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D48F TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msup><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-script style="vertical-align:0.413em;"><mjx-TeXAtom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-TeXAtom></mjx-script></mjx-msup><mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr><mjx-mtr><mjx-mtd style="text-align:right;padding-right:0;padding-top:0.15em;"><mjx-tstrut></mjx-tstrut></mjx-mtd><mjx-mtd style="text-align:left;padding-left:0;padding-top:0.15em;"><mjx-mi class="mjx-n"></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.372em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D496 TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="3"><mjx-c class="mjx-c22C5"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="3"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-TeXAtom texclass="ORD"><mjx-mover><mjx-over style="padding-bottom:0.105em;padding-left:0.356em;margin-bottom:-0.516em;"><mjx-mo class="mjx-n" style="width:0;margin-left:-0.25em;"><mjx-c class="mjx-c20D7 TEX-V"></mjx-c></mjx-mo></mjx-over><mjx-base><mjx-mi class="mjx-b mjx-i"><mjx-c class="mjx-c1D48F TEX-BI"></mjx-c></mjx-mi></mjx-base></mjx-mover></mjx-TeXAtom><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c42"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-tstrut></mjx-tstrut></mjx-mtd></mjx-mtr></mjx-itable></mjx-table></mjx-mtable></mjx-math><mjx-assistive-mml unselectable="on" display="block"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mtable displaystyle="true" columnalign="right left" columnspacing="0em" rowspacing="3pt"><mtr><mtd><mn>0</mn></mtd><mtd><mi></mi><mo>=</mo><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">u</mi></mrow><msup><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">n</mi></mrow><mi>T</mi></msup></mtd></mtr><mtr><mtd></mtd><mtd><mi></mi><mo>=</mo><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">u</mi></mrow><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><msup><mi data-mjx-auto-op="false">AA</mi><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>1</mn></mrow></msup></mrow><mo stretchy="false">)</mo><msup><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">n</mi></mrow><mi>T</mi></msup></mtd></mtr><mtr><mtd></mtd><mtd><mi></mi><mo>=</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mi data-mjx-auto-op="false">uA</mi></mrow><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><msup><mi mathvariant="normal">A</mi><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="normal">n</mi><mi mathvariant="normal">T</mi></msup></mrow><mo stretchy="false">)</mo></mtd></mtr><mtr><mtd></mtd><mtd><mi></mi><mo>=</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mi data-mjx-auto-op="false">uA</mi></mrow><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><msup><mi mathvariant="normal">A</mi><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="normal">n</mi><mi mathvariant="normal">T</mi></msup></mrow><msup><mo stretchy="false">)</mo><mi>T</mi></msup><msup><mo stretchy="false">)</mo><mi>T</mi></msup></mtd></mtr><mtr><mtd></mtd><mtd><mi></mi><mo>=</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mi data-mjx-auto-op="false">uA</mi></mrow><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">n</mi><mo stretchy="false">(</mo><msup><mi mathvariant="normal">A</mi><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>1</mn></mrow></msup><msup><mo stretchy="false">)</mo><mi mathvariant="normal">T</mi></msup></mrow><msup><mo stretchy="false">)</mo><mi>T</mi></msup></mtd></mtr><mtr><mtd></mtd><mtd><mi></mi><mo>=</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">u</mi><mo stretchy="false">→</mo></mover></mrow><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">A</mi></mrow><mo stretchy="false">)</mo><mo>⋅</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">n</mi><mo stretchy="false">→</mo></mover></mrow><mo stretchy="false">(</mo><msup><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">A</mi></mrow><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>1</mn></mrow></msup><msup><mo stretchy="false">)</mo><mi>T</mi></msup><mo stretchy="false">)</mo></mtd></mtr><mtr><mtd></mtd><mtd><mi></mi><mo>=</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">u</mi><mo stretchy="false">→</mo></mover></mrow><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">A</mi></mrow><mo stretchy="false">)</mo><mo>⋅</mo><mo stretchy="false">(</mo><mrow data-mjx-texclass="ORD"><mover><mi mathvariant="bold-italic">n</mi><mo stretchy="false">→</mo></mover></mrow><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">B</mi></mrow><mo stretchy="false">)</mo></mtd></mtr></mtable></math></mjx-assistive-mml></mjx-container><p>所以法线转换矩阵为</p><mjx-container class="MathJax" jax="CHTML" display="true" style="position:relative;"><mjx-math display="true" style="margin-left:0;margin-right:0;" class="MJX-TEX" aria-hidden="true"><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c42"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msup><mjx-TeXAtom texclass="ORD"><mjx-mi class="mjx-n"><mjx-c class="mjx-c41"></mjx-c></mjx-mi></mjx-TeXAtom><mjx-script style="vertical-align:0.413em;"><mjx-TeXAtom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-TeXAtom></mjx-script></mjx-msup><mjx-msup><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-script style="vertical-align:0.413em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D447 TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="block"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">B</mi></mrow><mo>=</mo><mo stretchy="false">(</mo><msup><mrow data-mjx-texclass="ORD"><mi mathvariant="normal">A</mi></mrow><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>1</mn></mrow></msup><msup><mo stretchy="false">)</mo><mi>T</mi></msup></math></mjx-assistive-mml></mjx-container></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: thejinchao@gmail.com">thejinchao</span><!----><!--]--><!--]--></span></div></div></footer><nav class="vp-page-nav" aria-label="page navigation"><a class="route-link auto-link prev" href="/note/graphics/math/transform_02.html" aria-label="几何变换(二)"><!--[--><div class="hint"><span class="arrow left"></span> Prev</div><div class="link"><span>几何变换(二)</span></div><!--]--></a><a class="route-link auto-link next" href="/note/graphics/math/transform_04.html" aria-label="摄像机变换"><!--[--><div class="hint">Next <span class="arrow right"></span></div><div class="link"><span>摄像机变换</span></div><!--]--></a></nav><!--[--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-DDhCkyt5.js" defer></script>
</body>
</html>