mbcp/zht/api/mp_math/plane.html

219 lines
102 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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-Hant" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>mbcp.mp_math.plane | MBCP docs</title>
<meta name="description" content="一個用於Minecraft粒子計算和生成的軟體庫">
<meta name="generator" content="VitePress v1.3.4">
<link rel="preload stylesheet" href="/assets/style.Bb0QBJmh.css" as="style">
<script type="module" src="/assets/app.l1Ut0uce.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.BPuUWxkA.js">
<link rel="modulepreload" href="/assets/chunks/framework.BV61Qrc0.js">
<link rel="modulepreload" href="/assets/zht_api_mp_math_plane.md.B6GWRRF6.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-8e016544><!--[--><!--]--><!--[--><span tabindex="-1" data-v-efdf7a7d></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-efdf7a7d> Skip to content </a><!--]--><!----><header class="VPNav" data-v-8e016544 data-v-0c3b3583><div class="VPNavBar has-sidebar top" data-v-0c3b3583 data-v-af8d762d><div class="wrapper" data-v-af8d762d><div class="container" data-v-af8d762d><div class="title" data-v-af8d762d><div class="VPNavBarTitle has-sidebar" data-v-af8d762d data-v-73c882b0><a class="title" href="/zht/" data-v-73c882b0><!--[--><!--]--><!----><span data-v-73c882b0>MBCP docs</span><!--[--><!--]--></a></div></div><div class="content" data-v-af8d762d><div class="content-body" data-v-af8d762d><!--[--><!--]--><div class="VPNavBarSearch search" data-v-af8d762d><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-af8d762d data-v-ae469694><span id="main-nav-aria-label" class="visually-hidden" data-v-ae469694> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-ae469694 data-v-4ca2fdac><!--[--><span data-v-4ca2fdac>指引</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-ae469694 data-v-4ca2fdac><!--[--><span data-v-4ca2fdac>API文檔</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/demo/" tabindex="0" data-v-ae469694 data-v-4ca2fdac><!--[--><span data-v-4ca2fdac>示範</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-af8d762d data-v-ba521018 data-v-6d56b0ed><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-6d56b0ed><span class="text" data-v-6d56b0ed><span class="vpi-languages option-icon" data-v-6d56b0ed></span><!----><span class="vpi-chevron-down text-icon" data-v-6d56b0ed></span></span></button><div class="menu" data-v-6d56b0ed><div class="VPMenu" data-v-6d56b0ed data-v-36a6a4be><!----><!--[--><!--[--><div class="items" data-v-ba521018><p class="title" data-v-ba521018>繁體中文</p><!--[--><div class="VPMenuLink" data-v-ba521018 data-v-a9b5eada><a class="VPLink link" href="/api/mp_math/plane.html" data-v-a9b5eada><!--[-->简体中文<!--]--></a></div><div class="VPMenuLink" data-v-ba521018 data-v-a9b5eada><a class="VPLink link" href="/en/api/mp_math/plane.html" data-v-a9b5eada><!--[-->English<!--]--></a></div><div class="VPMenuLink" data-v-ba521018 data-v-a9b5eada><a class="VPLink link" href="/ja/api/mp_math/plane.html" data-v-a9b5eada><!--[-->日本語<!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-af8d762d data-v-fd625bab><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-fd625bab data-v-38c704f2 data-v-793caf05><span class="check" data-v-793caf05><span class="icon" data-v-793caf05><!--[--><span class="vpi-sun sun" data-v-38c704f2></span><span class="vpi-moon moon" data-v-38c704f2></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-af8d762d data-v-9b3d2141 data-v-0ada25a4><!--[--><a class="VPSocialLink no-icon" href="https://github.com/snowykami/mbcp" aria-label="github" target="_blank" rel="noopener" data-v-0ada25a4 data-v-36d54f99><span class="vpi-social-github" /></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-af8d762d data-v-8ac0e455 data-v-6d56b0ed><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-6d56b0ed><span class="vpi-more-horizontal icon" data-v-6d56b0ed></span></button><div class="menu" data-v-6d56b0ed><div class="VPMenu" data-v-6d56b0ed data-v-36a6a4be><!----><!--[--><!--[--><div class="group translations" data-v-8ac0e455><p class="trans-title" data-v-8ac0e455>繁體中文</p><!--[--><div class="VPMenuLink" data-v-8ac0e455 data-v-a9b5eada><a class="VPLink link" href="/api/mp_math/plane.html" data-v-a9b5eada><!--[-->简体中文<!--]--></a></div><div class="VPMenuLink" data-v-8ac0e455 data-v-a9b5eada><a class="VPLink link" href="/en/api/mp_math/plane.html" data-v-a9b5eada><!--[-->English<!--]--></a></div><div class="VPMenuLink" data-v-8ac0e455 data-v-a9b5eada><a class="VPLink link" href="/ja/api/mp_math/plane.html" data-v-a9b5eada><!--[-->日本語<!--]--></a></div><!--]--></div><div class="group" data-v-8ac0e455><div class="item appearance" data-v-8ac0e455><p class="label" data-v-8ac0e455>Appearance</p><div class="appearance-action" data-v-8ac0e455><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-8ac0e455 data-v-38c704f2 data-v-793caf05><span class="check" data-v-793caf05><span class="icon" data-v-793caf05><!--[--><span class="vpi-sun sun" data-v-38c704f2></span><span class="vpi-moon moon" data-v-38c704f2></span><!--]--></span></span></button></div></div></div><div class="group" data-v-8ac0e455><div class="item social-links" data-v-8ac0e455><div class="VPSocialLinks social-links-list" data-v-8ac0e455 data-v-0ada25a4><!--[--><a class="VPSocialLink no-icon" href="https://github.com/snowykami/mbcp" aria-label="github" target="_blank" rel="noopener" data-v-0ada25a4 data-v-36d54f99><span class="vpi-social-github" /></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-af8d762d data-v-9b302893><span class="container" data-v-9b302893><span class="top" data-v-9b302893></span><span class="middle" data-v-9b302893></span><span class="bottom" data-v-9b302893></span></span></button></div></div></div></div><div class="divider" data-v-af8d762d><div class="divider-line" data-v-af8d762d></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-8e016544 data-v-513d39e6><div class="container" data-v-513d39e6><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-513d39e6><span class="vpi-align-left menu-icon" data-v-513d39e6></span><span class="menu-text" data-v-513d39e6>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-513d39e6 data-v-c4b0adf9><button data-v-c4b0adf9>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-8e016544 data-v-a2c838fb><div class="curtain" data-v-a2c838fb></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-a2c838fb><span class="visually-hidden" id="sidebar-aria-label" data-v-a2c838fb> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c4d8cef8><section class="VPSidebarItem level-0 has-active" data-v-c4d8cef8 data-v-e6240f47><div class="item" role="button" tabindex="0" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><h2 class="text" data-v-e6240f47>zht</h2><!----></div><div class="items" data-v-e6240f47><!--[--><section class="VPSidebarItem level-1 has-active" data-v-e6240f47 data-v-e6240f47><div class="item" role="button" tabindex="0" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><h3 class="text" data-v-e6240f47>api</h3><!----></div><div class="items" data-v-e6240f47><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/index.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 has-active" data-v-e6240f47 data-v-e6240f47><div class="item" role="button" tabindex="0" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><h4 class="text" data-v-e6240f47>mp_math</h4><!----></div><div class="items" data-v-e6240f47><!--[--><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/index.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/angle.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.angle</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/const.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.const</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/equation.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.equation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/line.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.line</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/mp_math_typing.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.mp_math_typing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/plane.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.plane</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/point.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.point</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/segment.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.segment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/utils.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.utils</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/mp_math/vector.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.mp_math.vector</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-e6240f47 data-v-e6240f47><div class="item" role="button" tabindex="0" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><h4 class="text" data-v-e6240f47>particle</h4><!----></div><div class="items" data-v-e6240f47><!--[--><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/particle/index.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.particle</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-e6240f47 data-v-e6240f47><div class="item" role="button" tabindex="0" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><h4 class="text" data-v-e6240f47>presets</h4><!----></div><div class="items" data-v-e6240f47><!--[--><div class="VPSidebarItem level-3 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/presets/index.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.presets</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-3" data-v-e6240f47 data-v-e6240f47><div class="item" role="button" tabindex="0" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><h5 class="text" data-v-e6240f47>model</h5><!----></div><div class="items" data-v-e6240f47><!--[--><div class="VPSidebarItem level-4 is-link" data-v-e6240f47 data-v-e6240f47><div class="item" data-v-e6240f47><div class="indicator" data-v-e6240f47></div><a class="VPLink link link" href="/zht/api/presets/model/index.html" data-v-e6240f47><!--[--><p class="text" data-v-e6240f47>mbcp.presets.model</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-8e016544 data-v-4fa77a91><div class="VPDoc has-sidebar has-aside" data-v-4fa77a91 data-v-aa782c77><!--[--><!--]--><div class="container" data-v-aa782c77><div class="aside" data-v-aa782c77><div class="aside-curtain" data-v-aa782c77></div><div class="aside-container" data-v-aa782c77><div class="aside-content" data-v-aa782c77><div class="VPDocAside" data-v-aa782c77 data-v-9030d96a><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-9030d96a data-v-e9eccece><div class="content" data-v-e9eccece><div class="outline-marker" data-v-e9eccece></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-e9eccece>On this page</div><ul class="VPDocOutlineItem root" data-v-e9eccece data-v-f55eb20b><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-9030d96a></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-aa782c77><div class="content-container" data-v-aa782c77><!--[--><!--]--><main class="main" data-v-aa782c77><div style="position:relative;" class="vp-doc _zht_api_mp_math_plane" data-v-aa782c77><div><h3 id="class-plane3" tabindex="-1"><strong>class</strong> <code>Plane3</code> <a class="header-anchor" href="#class-plane3" aria-label="Permalink to &quot;**class** `Plane3`&quot;"></a></h3><h3 id="method-init-self-a-float-b-float-c-float-d-float" tabindex="-1"><em><strong>method</strong></em> <code>__init__(self, a: float, b: float, c: float, d: float)</code> <a class="header-anchor" href="#method-init-self-a-float-b-float-c-float-d-float" aria-label="Permalink to &quot;***method*** `__init__(self, a: float, b: float, c: float, d: float)`&quot;"></a></h3><p><strong>説明</strong>: 平面方程ax + by + cz + d = 0</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>a: x系数</li><li>b: y系数</li><li>c: z系数</li><li>d: 常数项</li></ul></blockquote><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __init__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, a: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, b: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, c: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, d: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 平面方程ax + by + cz + d = 0</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> a: x系数</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> b: y系数</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> c: z系数</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> d: 常数项</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> a</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> b</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> c</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> d</span></span></code></pre></div></details><h3 id="method-approx-self-other-plane3-bool" tabindex="-1"><em><strong>method</strong></em> <code>approx(self, other: Plane3) -&gt; bool</code> <a class="header-anchor" href="#method-approx-self-other-plane3-bool" aria-label="Permalink to &quot;***method*** `approx(self, other: Plane3) -&gt; bool`&quot;"></a></h3><p><strong>説明</strong>: 判断两个平面是否近似相等。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other: 另一个平面</li></ul></blockquote><p><strong>返回</strong>: 是否近似相等</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> approx</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 判断两个平面是否近似相等。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other: 另一个平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 是否近似相等</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.b, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.c, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.d, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.a, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.c, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.d, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.a, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.b, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> approx(other.d, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> False</span></span></code></pre></div></details><h3 id="method-cal-angle-self-other-line3-plane3-anyangle" tabindex="-1"><em><strong>method</strong></em> <code>cal_angle(self, other: Line3 | Plane3) -&gt; AnyAngle</code> <a class="header-anchor" href="#method-cal-angle-self-other-line3-plane3-anyangle" aria-label="Permalink to &quot;***method*** `cal_angle(self, other: Line3 | Plane3) -&gt; AnyAngle`&quot;"></a></h3><p><strong>説明</strong>: 计算平面与平面之间的夹角。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other: 另一个平面</li></ul></blockquote><p><strong>返回</strong>: 夹角弧度</p><p><strong>抛出</strong>:</p><blockquote><ul><li>TypeError 不支持的类型</li></ul></blockquote><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cal_angle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3 | Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;AnyAngle&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 计算平面与平面之间的夹角。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other: 另一个平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 夹角弧度</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Raises:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> TypeError: 不支持的类型</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> isinstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other, Line3):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal.cal_angle(other.direction).complementary</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> isinstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other, Plane3):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> AnyAngle(math.acos(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.normal </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal.length </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.normal.length)), </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">is_radian</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> TypeError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Unsupported type: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><h3 id="method-cal-distance-self-other-plane3-point3-float" tabindex="-1"><em><strong>method</strong></em> <code>cal_distance(self, other: Plane3 | Point3) -&gt; float</code> <a class="header-anchor" href="#method-cal-distance-self-other-plane3-point3-float" aria-label="Permalink to &quot;***method*** `cal_distance(self, other: Plane3 | Point3) -&gt; float`&quot;"></a></h3><p><strong>説明</strong>: 计算平面与平面或点之间的距离。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other: 另一个平面或点</li></ul></blockquote><p><strong>返回</strong>: 距离</p><p><strong>抛出</strong>:</p><blockquote><ul><li>TypeError 不支持的类型</li></ul></blockquote><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cal_distance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3 | Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 计算平面与平面或点之间的距离。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other: 另一个平面或点</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 距离</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Raises:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> TypeError: 不支持的类型</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> isinstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other, Plane3):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> isinstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other, Point3):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> abs</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.x </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 2</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 2</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0.5</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> TypeError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Unsupported type: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><h3 id="method-cal-intersection-line3-self-other-plane3-line3" tabindex="-1"><em><strong>method</strong></em> <code>cal_intersection_line3(self, other: Plane3) -&gt; Line3</code> <a class="header-anchor" href="#method-cal-intersection-line3-self-other-plane3-line3" aria-label="Permalink to &quot;***method*** `cal_intersection_line3(self, other: Plane3) -&gt; Line3`&quot;"></a></h3><p><strong>説明</strong>: 计算两平面的交线。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other: 另一个平面</li></ul></blockquote><p><strong>返回</strong>: 两平面的交线</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cal_intersection_line3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 计算两平面的交线。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other: 另一个平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 两平面的交线</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Raises:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal.is_parallel(other.normal):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ValueError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Planes are parallel and have no intersection.&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> direction </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal.cross(other.normal)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x, y, z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> A </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.array([[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c], [other.b, other.c]])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> B </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.array([</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">other.d])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> y, z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.linalg.solve(A, B)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> A </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.array([[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c], [other.a, other.c]])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> B </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.array([</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">other.d])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x, z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.linalg.solve(A, B)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> A </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.array([[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b], [other.a, other.b]])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> B </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.array([</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">other.d])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x, y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> np.linalg.solve(A, B)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Line3(Point3(x, y, z), direction)</span></span></code></pre></div></details><h3 id="method-cal-intersection-point3-self-other-line3-point3" tabindex="-1"><em><strong>method</strong></em> <code>cal_intersection_point3(self, other: Line3) -&gt; Point3</code> <a class="header-anchor" href="#method-cal-intersection-point3-self-other-line3-point3" aria-label="Permalink to &quot;***method*** `cal_intersection_point3(self, other: Line3) -&gt; Point3`&quot;"></a></h3><p><strong>説明</strong>: 计算平面与直线的交点。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other: 不与平面平行或在平面上的直线</li></ul></blockquote><p><strong>返回</strong>: 交点</p><p><strong>抛出</strong>:</p><blockquote><ul><li>ValueError 平面与直线平行或重合</li></ul></blockquote><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cal_intersection_point3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 计算平面与直线的交点。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other: 不与平面平行或在平面上的直线</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 交点</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Raises:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ValueError: 平面与直线平行或重合</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.direction </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ValueError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;The plane and the line are parallel or coincident.&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x, y, z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.get_parametric_equations()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point.x </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point.y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point.z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.d) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.direction.x </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.direction.y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.direction.z)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Point3(x(t), y(t), z(t))</span></span></code></pre></div></details><h3 id="method-cal-parallel-plane3-self-point-point3-plane3" tabindex="-1"><em><strong>method</strong></em> <code>cal_parallel_plane3(self, point: Point3) -&gt; Plane3</code> <a class="header-anchor" href="#method-cal-parallel-plane3-self-point-point3-plane3" aria-label="Permalink to &quot;***method*** `cal_parallel_plane3(self, point: Point3) -&gt; Plane3`&quot;"></a></h3><p><strong>説明</strong>: 计算平行于该平面且过指定点的平面。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>point: 指定点</li></ul></blockquote><p><strong>返回</strong>: 所求平面</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cal_parallel_plane3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, point: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 计算平行于该平面且过指定点的平面。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> point: 指定点</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 所求平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Plane3.from_point_and_normal(point, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal)</span></span></code></pre></div></details><h3 id="method-is-parallel-self-other-plane3-bool" tabindex="-1"><em><strong>method</strong></em> <code>is_parallel(self, other: Plane3) -&gt; bool</code> <a class="header-anchor" href="#method-is-parallel-self-other-plane3-bool" aria-label="Permalink to &quot;***method*** `is_parallel(self, other: Plane3) -&gt; bool`&quot;"></a></h3><p><strong>説明</strong>: 判断两个平面是否平行。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other: 另一个平面</li></ul></blockquote><p><strong>返回</strong>: 是否平行</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> is_parallel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 判断两个平面是否平行。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other: 另一个平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 是否平行</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal.is_parallel(other.normal)</span></span></code></pre></div></details><h3 id="property" tabindex="-1"><code>@property</code> <a class="header-anchor" href="#property" aria-label="Permalink to &quot;`@property`&quot;"></a></h3><h3 id="method-normal-self-vector3" tabindex="-1"><em><strong>method</strong></em> <code>normal(self) -&gt; Vector3</code> <a class="header-anchor" href="#method-normal-self-vector3" aria-label="Permalink to &quot;***method*** `normal(self) -&gt; Vector3`&quot;"></a></h3><p><strong>説明</strong>: 平面的法向量。</p><p><strong>返回</strong>: 法向量</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">property</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> normal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Vector3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 平面的法向量。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 法向量</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Vector3(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.a, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.b, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.c)</span></span></code></pre></div></details><h3 id="classmethod" tabindex="-1"><code>@classmethod</code> <a class="header-anchor" href="#classmethod" aria-label="Permalink to &quot;`@classmethod`&quot;"></a></h3><h3 id="method-from-point-and-normal-cls-point-point3-normal-vector3-plane3" tabindex="-1"><em><strong>method</strong></em> <code>from_point_and_normal(cls, point: Point3, normal: Vector3) -&gt; Plane3</code> <a class="header-anchor" href="#method-from-point-and-normal-cls-point-point3-normal-vector3-plane3" aria-label="Permalink to &quot;***method*** `from_point_and_normal(cls, point: Point3, normal: Vector3) -&gt; Plane3`&quot;"></a></h3><p><strong>説明</strong>: 工厂函数 由点和法向量构造平面(点法式构造)。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>point: 平面上的一点</li><li>normal: 法向量</li></ul></blockquote><p><strong>返回</strong>: 平面</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">classmethod</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> from_point_and_normal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(cls, point: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, normal: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Vector3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 工厂函数 由点和法向量构造平面(点法式构造)。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> point: 平面上的一点</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> normal: 法向量</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> a, b, c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (normal.x, normal.y, normal.z)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> d </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">a </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> point.x </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> b </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> point.y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> c </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> point.z</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> cls</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(a, b, c, d)</span></span></code></pre></div></details><h3 id="classmethod-1" tabindex="-1"><code>@classmethod</code> <a class="header-anchor" href="#classmethod-1" aria-label="Permalink to &quot;`@classmethod`&quot;"></a></h3><h3 id="method-from-three-points-cls-p1-point3-p2-point3-p3-point3-plane3" tabindex="-1"><em><strong>method</strong></em> <code>from_three_points(cls, p1: Point3, p2: Point3, p3: Point3) -&gt; Plane3</code> <a class="header-anchor" href="#method-from-three-points-cls-p1-point3-p2-point3-p3-point3-plane3" aria-label="Permalink to &quot;***method*** `from_three_points(cls, p1: Point3, p2: Point3, p3: Point3) -&gt; Plane3`&quot;"></a></h3><p><strong>説明</strong>: 工厂函数 由三点构造平面。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>p1: 点1</li><li>p2: 点2</li><li>p3: 点3</li></ul></blockquote><p><strong>返回</strong>: 平面</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">classmethod</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> from_three_points</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(cls, p1: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, p2: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, p3: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 工厂函数 由三点构造平面。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> p1: 点1</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> p2: 点2</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> p3: 点3</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v1 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> p2 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> p1</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v2 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> p3 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> p1</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> normal </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v1.cross(v2)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> cls</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.from_point_and_normal(p1, normal)</span></span></code></pre></div></details><h3 id="classmethod-2" tabindex="-1"><code>@classmethod</code> <a class="header-anchor" href="#classmethod-2" aria-label="Permalink to &quot;`@classmethod`&quot;"></a></h3><h3 id="method-from-two-lines-cls-l1-line3-l2-line3-plane3" tabindex="-1"><em><strong>method</strong></em> <code>from_two_lines(cls, l1: Line3, l2: Line3) -&gt; Plane3</code> <a class="header-anchor" href="#method-from-two-lines-cls-l1-line3-l2-line3-plane3" aria-label="Permalink to &quot;***method*** `from_two_lines(cls, l1: Line3, l2: Line3) -&gt; Plane3`&quot;"></a></h3><p><strong>説明</strong>: 工厂函数 由两直线构造平面。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>l1: 直线1</li><li>l2: 直线2</li></ul></blockquote><p><strong>返回</strong>: 平面</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">classmethod</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> from_two_lines</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(cls, l1: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, l2: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 工厂函数 由两直线构造平面。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> l1: 直线1</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> l2: 直线2</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v1 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> l1.direction</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v2 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> l2.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> l1.point</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v2 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> zero_vector3:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v2 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> l2.get_point(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> l1.point</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> cls</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.from_point_and_normal(l1.point, v1.cross(v2))</span></span></code></pre></div></details><h3 id="classmethod-3" tabindex="-1"><code>@classmethod</code> <a class="header-anchor" href="#classmethod-3" aria-label="Permalink to &quot;`@classmethod`&quot;"></a></h3><h3 id="method-from-point-and-line-cls-point-point3-line-line3-plane3" tabindex="-1"><em><strong>method</strong></em> <code>from_point_and_line(cls, point: Point3, line: Line3) -&gt; Plane3</code> <a class="header-anchor" href="#method-from-point-and-line-cls-point-point3-line-line3-plane3" aria-label="Permalink to &quot;***method*** `from_point_and_line(cls, point: Point3, line: Line3) -&gt; Plane3`&quot;"></a></h3><p><strong>説明</strong>: 工厂函数 由点和直线构造平面。</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>point: 面上一点</li><li>line: 面上直线,不包含点</li></ul></blockquote><p><strong>返回</strong>: 平面</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">classmethod</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> from_point_and_line</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(cls, point: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, line: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 工厂函数 由点和直线构造平面。</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> point: 面上一点</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> line: 面上直线,不包含点</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 平面</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> cls</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.from_point_and_normal(point, line.direction)</span></span></code></pre></div></details><h3 id="overload" tabindex="-1"><code>@overload</code> <a class="header-anchor" href="#overload" aria-label="Permalink to &quot;`@overload`&quot;"></a></h3><h3 id="method-and-self-other-line3-point3-none" tabindex="-1"><em><strong>method</strong></em> <code>__and__(self, other: Line3) -&gt; Point3 | None</code> <a class="header-anchor" href="#method-and-self-other-line3-point3-none" aria-label="Permalink to &quot;***method*** `__and__(self, other: Line3) -&gt; Point3 | None`&quot;"></a></h3><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@overload</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __and__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3 | None&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ...</span></span></code></pre></div></details><h3 id="overload-1" tabindex="-1"><code>@overload</code> <a class="header-anchor" href="#overload-1" aria-label="Permalink to &quot;`@overload`&quot;"></a></h3><h3 id="method-and-self-other-plane3-line3-none" tabindex="-1"><em><strong>method</strong></em> <code>__and__(self, other: Plane3) -&gt; Line3 | None</code> <a class="header-anchor" href="#method-and-self-other-plane3-line3-none" aria-label="Permalink to &quot;***method*** `__and__(self, other: Plane3) -&gt; Line3 | None`&quot;"></a></h3><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@overload</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __and__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Plane3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3 | None&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ...</span></span></code></pre></div></details><h3 id="method-and-self-other" tabindex="-1"><em><strong>method</strong></em> <code>__and__(self, other)</code> <a class="header-anchor" href="#method-and-self-other" aria-label="Permalink to &quot;***method*** `__and__(self, other)`&quot;"></a></h3><p><strong>説明</strong>: 取两平面的交集(人话:交线)</p><p><strong>變數説明</strong>:</p><blockquote><ul><li>other:</li></ul></blockquote><p><strong>返回</strong>: 不平行平面的交线平面平行返回None</p><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __and__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other):</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 取两平面的交集(人话:交线)</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> other:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 不平行平面的交线平面平行返回None</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> isinstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other, Plane3):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal.is_parallel(other.normal):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.cal_intersection_line3(other)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> isinstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other, Line3):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.normal </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.direction </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.cal_intersection_point3(other)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> TypeError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;unsupported operand type(s) for &amp;: &#39;Plane3&#39; and &#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(other)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><h3 id="method-eq-self-other-bool" tabindex="-1"><em><strong>method</strong></em> <code>__eq__(self, other) -&gt; bool</code> <a class="header-anchor" href="#method-eq-self-other-bool" aria-label="Permalink to &quot;***method*** `__eq__(self, other) -&gt; bool`&quot;"></a></h3><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __eq__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.approx(other)</span></span></code></pre></div></details><h3 id="method-rand-self-other-line3-point3" tabindex="-1"><em><strong>method</strong></em> <code>__rand__(self, other: Line3) -&gt; Point3</code> <a class="header-anchor" href="#method-rand-self-other-line3-point3" aria-label="Permalink to &quot;***method*** `__rand__(self, other: Line3) -&gt; Point3`&quot;"></a></h3><details><summary><b>源碼</b></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __rand__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Line3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;Point3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.cal_intersection_point3(other)</span></span></code></pre></div></details></div></div></main><footer class="VPDocFooter" data-v-aa782c77 data-v-f33b051d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-f33b051d><span class="visually-hidden" id="doc-footer-aria-label" data-v-f33b051d>Pager</span><div class="pager" data-v-f33b051d><a class="VPLink link pager-link prev" href="/zht/api/mp_math/mp_math_typing.html" data-v-f33b051d><!--[--><span class="desc" data-v-f33b051d>Previous page</span><span class="title" data-v-f33b051d>mbcp.mp_math.mp_math_typing</span><!--]--></a></div><div class="pager" data-v-f33b051d><a class="VPLink link pager-link next" href="/zht/api/mp_math/point.html" data-v-f33b051d><!--[--><span class="desc" data-v-f33b051d>Next page</span><span class="title" data-v-f33b051d>mbcp.mp_math.point</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api-ex.md\":\"DOsKaL8H\",\"api_index.md\":\"BvazTqTB\",\"api_mp_math_angle.md\":\"eAy7w1HN\",\"api_mp_math_const.md\":\"D9zs7__H\",\"api_mp_math_equation.md\":\"D6QhNvHe\",\"api_mp_math_index.md\":\"4P0hk6gb\",\"api_mp_math_line.md\":\"DsJQDchM\",\"api_mp_math_mp_math_typing.md\":\"COrE_fd3\",\"api_mp_math_plane.md\":\"CmoVvPiw\",\"api_mp_math_point.md\":\"ClJD85mP\",\"api_mp_math_segment.md\":\"7jBtS4F1\",\"api_mp_math_utils.md\":\"BMwtm7TJ\",\"api_mp_math_vector.md\":\"CROCIDXX\",\"api_particle_index.md\":\"BRCSxC3e\",\"api_presets_index.md\":\"Dl6Ss91J\",\"api_presets_model_index.md\":\"DUZx13AW\",\"en_api_index.md\":\"Bgu-LD1B\",\"en_api_mp_math_angle.md\":\"BuhpKHnt\",\"en_api_mp_math_const.md\":\"D_Flpj8t\",\"en_api_mp_math_equation.md\":\"CdqZIJEO\",\"en_api_mp_math_index.md\":\"DrjDUYBY\",\"en_api_mp_math_line.md\":\"BEvxdWYQ\",\"en_api_mp_math_mp_math_typing.md\":\"CyXXFdS4\",\"en_api_mp_math_plane.md\":\"DUu9P3nM\",\"en_api_mp_math_point.md\":\"DMig0FI1\",\"en_api_mp_math_segment.md\":\"CcaokAF8\",\"en_api_mp_math_utils.md\":\"DZohqw2b\",\"en_api_mp_math_vector.md\":\"Sd_IZsgE\",\"en_api_particle_index.md\":\"CmC1QX5o\",\"en_api_presets_index.md\":\"CZ5hl_7D\",\"en_api_presets_model_index.md\":\"Cs8vON2C\",\"guide_index.md\":\"BE2yloik\",\"index.md\":\"BE1qChTt\",\"ja_api_index.md\":\"4BnflFIm\",\"ja_api_mp_math_angle.md\":\"DL9J6RE2\",\"ja_api_mp_math_const.md\":\"CyaIJkFx\",\"ja_api_mp_math_equation.md\":\"B2lD-VSI\",\"ja_api_mp_math_index.md\":\"CSAMHYsB\",\"ja_api_mp_math_line.md\":\"fj-_s5Ug\",\"ja_api_mp_math_mp_math_typing.md\":\"Bl5kyhpI\",\"ja_api_mp_math_plane.md\":\"yLekgCvK\",\"ja_api_mp_math_point.md\":\"CpHHrSk8\",\"ja_api_mp_math_segment.md\":\"CB1_z-rn\",\"ja_api_mp_math_utils.md\":\"BrfEEfl-\",\"ja_api_mp_math_vector.md\":\"p54TKACE\",\"ja_api_particle_index.md\":\"E2YnH7EN\",\"ja_api_presets_index.md\":\"ATGcHt9d\",\"ja_api_presets_model_index.md\":\"D8yZmO5R\",\"md-ex.md\":\"BX0WqOqv\",\"zht_api_index.md\":\"Dq4XPUKZ\",\"zht_api_mp_math_angle.md\":\"B4T6L25M\",\"zht_api_mp_math_const.md\":\"B8uQOIr_\",\"zht_api_mp_math_equation.md\":\"H6Y480q1\",\"zht_api_mp_math_index.md\":\"D09y2ubg\",\"zht_api_mp_math_line.md\":\"DYC1X0oD\",\"zht_api_mp_math_mp_math_typing.md\":\"DLx0IibM\",\"zht_api_mp_math_plane.md\":\"B6GWRRF6\",\"zht_api_mp_math_point.md\":\"Bm1IEwlI\",\"zht_api_mp_math_segment.md\":\"Bop8t2IE\",\"zht_api_mp_math_utils.md\":\"CERv8c-M\",\"zht_api_mp_math_vector.md\":\"BTWxlpB1\",\"zht_api_particle_index.md\":\"kAm9VAEw\",\"zht_api_presets_index.md\":\"BmouaEaT\",\"zht_api_presets_model_index.md\":\"SQ5PPdaL\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"MBCP docs\",\"description\":\"MBCP library docs\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/snowykami/mbcp\"}],\"sidebar\":{\"/api/\":[{\"text\":\"api\",\"items\":[{\"text\":\"mbcp\",\"link\":\"/api/index.md\"},{\"text\":\"mp_math\",\"items\":[{\"text\":\"mbcp.mp_math\",\"link\":\"/api/mp_math/index.md\"},{\"text\":\"mbcp.mp_math.angle\",\"link\":\"/api/mp_math/angle.md\"},{\"text\":\"mbcp.mp_math.const\",\"link\":\"/api/mp_math/const.md\"},{\"text\":\"mbcp.mp_math.equation\",\"link\":\"/api/mp_math/equation.md\"},{\"text\":\"mbcp.mp_math.line\",\"link\":\"/api/mp_math/line.md\"},{\"text\":\"mbcp.mp_math.mp_math_typing\",\"link\":\"/api/mp_math/mp_math_typing.md\"},{\"text\":\"mbcp.mp_math.plane\",\"link\":\"/api/mp_math/plane.md\"},{\"text\":\"mbcp.mp_math.point\",\"link\":\"/api/mp_math/point.md\"},{\"text\":\"mbcp.mp_math.segment\",\"link\":\"/api/mp_math/segment.md\"},{\"text\":\"mbcp.mp_math.utils\",\"link\":\"/api/mp_math/utils.md\"},{\"text\":\"mbcp.mp_math.vector\",\"link\":\"/api/mp_math/vector.md\"}]},{\"text\":\"particle\",\"items\":[{\"text\":\"mbcp.particle\",\"link\":\"/api/particle/index.md\"}]},{\"text\":\"presets\",\"items\":[{\"text\":\"mbcp.presets\",\"link\":\"/api/presets/index.md\"},{\"text\":\"model\",\"items\":[{\"text\":\"mbcp.presets.model\",\"link\":\"/api/presets/model/index.md\"}]}]}]}],\"/guide/\":[{\"text\":\"guide\",\"items\":[{\"text\":\"开始不了一点\",\"link\":\"/guide/index.md\"}]}],\"/en/\":[{\"text\":\"en\",\"items\":[{\"text\":\"api\",\"items\":[{\"text\":\"mbcp\",\"link\":\"/en/api/index.md\"},{\"text\":\"mp_math\",\"items\":[{\"text\":\"mbcp.mp_math\",\"link\":\"/en/api/mp_math/index.md\"},{\"text\":\"mbcp.mp_math.angle\",\"link\":\"/en/api/mp_math/angle.md\"},{\"text\":\"mbcp.mp_math.const\",\"link\":\"/en/api/mp_math/const.md\"},{\"text\":\"mbcp.mp_math.equation\",\"link\":\"/en/api/mp_math/equation.md\"},{\"text\":\"mbcp.mp_math.line\",\"link\":\"/en/api/mp_math/line.md\"},{\"text\":\"mbcp.mp_math.mp_math_typing\",\"link\":\"/en/api/mp_math/mp_math_typing.md\"},{\"text\":\"mbcp.mp_math.plane\",\"link\":\"/en/api/mp_math/plane.md\"},{\"text\":\"mbcp.mp_math.point\",\"link\":\"/en/api/mp_math/point.md\"},{\"text\":\"mbcp.mp_math.segment\",\"link\":\"/en/api/mp_math/segment.md\"},{\"text\":\"mbcp.mp_math.utils\",\"link\":\"/en/api/mp_math/utils.md\"},{\"text\":\"mbcp.mp_math.vector\",\"link\":\"/en/api/mp_math/vector.md\"}]},{\"text\":\"particle\",\"items\":[{\"text\":\"mbcp.particle\",\"link\":\"/en/api/particle/index.md\"}]},{\"text\":\"presets\",\"items\":[{\"text\":\"mbcp.presets\",\"link\":\"/en/api/presets/index.md\"},{\"text\":\"model\",\"items\":[{\"text\":\"mbcp.presets.model\",\"link\":\"/en/api/presets/model/index.md\"}]}]}]}]}],\"/ja/\":[{\"text\":\"ja\",\"items\":[{\"text\":\"api\",\"items\":[{\"text\":\"mbcp\",\"link\":\"/ja/api/index.md\"},{\"text\":\"mp_math\",\"items\":[{\"text\":\"mbcp.mp_math\",\"link\":\"/ja/api/mp_math/index.md\"},{\"text\":\"mbcp.mp_math.angle\",\"link\":\"/ja/api/mp_math/angle.md\"},{\"text\":\"mbcp.mp_math.const\",\"link\":\"/ja/api/mp_math/const.md\"},{\"text\":\"mbcp.mp_math.equation\",\"link\":\"/ja/api/mp_math/equation.md\"},{\"text\":\"mbcp.mp_math.line\",\"link\":\"/ja/api/mp_math/line.md\"},{\"text\":\"mbcp.mp_math.mp_math_typing\",\"link\":\"/ja/api/mp_math/mp_math_typing.md\"},{\"text\":\"mbcp.mp_math.plane\",\"link\":\"/ja/api/mp_math/plane.md\"},{\"text\":\"mbcp.mp_math.point\",\"link\":\"/ja/api/mp_math/point.md\"},{\"text\":\"mbcp.mp_math.segment\",\"link\":\"/ja/api/mp_math/segment.md\"},{\"text\":\"mbcp.mp_math.utils\",\"link\":\"/ja/api/mp_math/utils.md\"},{\"text\":\"mbcp.mp_math.vector\",\"link\":\"/ja/api/mp_math/vector.md\"}]},{\"text\":\"particle\",\"items\":[{\"text\":\"mbcp.particle\",\"link\":\"/ja/api/particle/index.md\"}]},{\"text\":\"presets\",\"items\":[{\"text\":\"mbcp.presets\",\"link\":\"/ja/api/presets/index.md\"},{\"text\":\"model\",\"items\":[{\"text\":\"mbcp.presets.model\",\"link\":\"/ja/api/presets/model/index.md\"}]}]}]}]}],\"/zht/\":[{\"text\":\"zht\",\"items\":[{\"text\":\"api\",\"items\":[{\"text\":\"mbcp\",\"link\":\"/zht/api/index.md\"},{\"text\":\"mp_math\",\"items\":[{\"text\":\"mbcp.mp_math\",\"link\":\"/zht/api/mp_math/index.md\"},{\"text\":\"mbcp.mp_math.angle\",\"link\":\"/zht/api/mp_math/angle.md\"},{\"text\":\"mbcp.mp_math.const\",\"link\":\"/zht/api/mp_math/const.md\"},{\"text\":\"mbcp.mp_math.equation\",\"link\":\"/zht/api/mp_math/equation.md\"},{\"text\":\"mbcp.mp_math.line\",\"link\":\"/zht/api/mp_math/line.md\"},{\"text\":\"mbcp.mp_math.mp_math_typing\",\"link\":\"/zht/api/mp_math/mp_math_typing.md\"},{\"text\":\"mbcp.mp_math.plane\",\"link\":\"/zht/api/mp_math/plane.md\"},{\"text\":\"mbcp.mp_math.point\",\"link\":\"/zht/api/mp_math/point.md\"},{\"text\":\"mbcp.mp_math.segment\",\"link\":\"/zht/api/mp_math/segment.md\"},{\"text\":\"mbcp.mp_math.utils\",\"link\":\"/zht/api/mp_math/utils.md\"},{\"text\":\"mbcp.mp_math.vector\",\"link\":\"/zht/api/mp_math/vector.md\"}]},{\"text\":\"particle\",\"items\":[{\"text\":\"mbcp.particle\",\"link\":\"/zht/api/particle/index.md\"}]},{\"text\":\"presets\",\"items\":[{\"text\":\"mbcp.presets\",\"link\":\"/zht/api/presets/index.md\"},{\"text\":\"model\",\"items\":[{\"text\":\"mbcp.presets.model\",\"link\":\"/zht/api/presets/model/index.md\"}]}]}]}]}],\"/api-ex.md/\":[{\"text\":\"Runtime API Examples\",\"items\":[]}],\"/md-ex.md/\":[{\"text\":\"Markdown Extension Examples\",\"items\":[]}]}},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-Hans\",\"description\":\"一个用于Minecraft粒子计算和生成的库\",\"themeConfig\":{\"nav\":[{\"text\":\"快速开始\",\"link\":\"/guide/\"},{\"text\":\"API文档\",\"link\":\"/api/\"},{\"text\":\"实例\",\"link\":\"/demo/\"}]}},\"en\":{\"label\":\"English\",\"lang\":\"en-US\",\"description\":\"A library made for Minecraft particle generation\",\"themeConfig\":{\"nav\":[{\"text\":\"Get Start\",\"link\":\"/guide\"},{\"text\":\"API Document\",\"link\":\"/api/\"},{\"text\":\"Demo\",\"link\":\"/demo/\"}]}},\"ja\":{\"label\":\"日本語\",\"lang\":\"ja-JP\",\"description\":\"Minecraftのパーティクル生成用のライブラリ\",\"themeConfig\":{\"nav\":[{\"text\":\"スタート\",\"link\":\"/guide\"},{\"text\":\"APIドキュメント\",\"link\":\"/api/\"},{\"text\":\"インスタンス\",\"link\":\"/demo/\"}]}},\"zht\":{\"label\":\"繁體中文\",\"lang\":\"zh-Hant\",\"description\":\"一個用於Minecraft粒子計算和生成的軟體庫\",\"themeConfig\":{\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\"},{\"text\":\"API文檔\",\"link\":\"/api/\"},{\"text\":\"示範\",\"link\":\"/demo/\"}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>