mirror of
https://github.com/snowykami/mbcp.git
synced 2024-11-27 08:45:03 +08:00
216 lines
62 KiB
HTML
216 lines
62 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="zh-Hans" dir="ltr">
|
|||
|
<head>
|
|||
|
<meta charset="utf-8">
|
|||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|||
|
<title>mbcp.mp\nmath.line | 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/api_mp_math_line.md.BybnyRUL.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 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" data-v-af8d762d data-v-73c882b0><a class="title" href="/" 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><!----><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="/en/api/mp_math/line.html" data-v-a9b5eada><!--[-->English<!--]--></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="/en/api/mp_math/line.html" data-v-a9b5eada><!--[-->English<!--]--></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
|
|||
|
|
|||
|
direction: 直线的方向向量
|
|||
|
</code></pre><details><summary>源代码</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, point: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, direction: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Vector3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</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;"> 三维空间中的直线。由一个点和一个方向向量确定。</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;"> direction: 直线的方向向量</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> point</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> direction</span></span></code></pre></div></details><h3 id="emsp-def-approx-self-other-line3-epsilon-float-bool" tabindex="-1"> <em><strong>def</strong></em> <code>approx(self, other: 'Line3', epsilon: float) -> bool</code> <a class="header-anchor" href="#emsp-def-approx-self-other-line3-epsilon-float-bool" aria-label="Permalink to "&emsp; ***def*** `approx(self, other: 'Line3', epsilon: float) -> bool`""></a></h3><p> 判断两条直线是否近似相等。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
|
|||
|
epsilon: 误差
|
|||
|
</code></pre><p>Returns:</p><pre><code>是否近似相等
|
|||
|
</code></pre><details><summary>源代码</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;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, epsilon: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">APPROX</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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;"> epsilon: 误差</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;"> """</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;">.is_approx_parallel(other, epsilon) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</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;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point).is_approx_parallel(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction, epsilon)</span></span></code></pre></div></details><h3 id="emsp-def-cal-angle-self-other-line3-anyangle" tabindex="-1"> <em><strong>def</strong></em> <code>cal_angle(self, other: 'Line3') -> 'AnyAngle'</code> <a class="header-anchor" href="#emsp-def-cal-angle-self-other-line3-anyangle" aria-label="Permalink to "&emsp; ***def*** `cal_angle(self, other: 'Line3') -> 'AnyAngle'`""></a></h3><p> 计算直线和直线之间的夹角。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
</code></pre><p>Returns:</p><pre><code>夹角弧度
|
|||
|
</code></pre><p>Raises:</p><pre><code>TypeError: 不支持的类型
|
|||
|
</code></pre><details><summary>源代码</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;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'AnyAngle'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</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;"> 计算直线和直线之间的夹角。</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;"> """</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;">.direction.cal_angle(other.direction)</span></span></code></pre></div></details><h3 id="emsp-def-cal-distance-self-other-line3-point3-float" tabindex="-1"> <em><strong>def</strong></em> <code>cal_distance(self, other: 'Line3 | Point3') -> float</code> <a class="header-anchor" href="#emsp-def-cal-distance-self-other-line3-point3-float" aria-label="Permalink to "&emsp; ***def*** `cal_distance(self, other: 'Line3 | Point3') -> float`""></a></h3><p> 计算直线和直线或点之间的距离。</p><p>Args:</p><pre><code>other: 平行直线或点
|
|||
|
</code></pre><p>Returns:</p><pre><code>距离
|
|||
|
</code></pre><p>Raises:</p><pre><code>TypeError: 不支持的类型
|
|||
|
</code></pre><details><summary>源代码</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;">'Line3 | Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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>
|
|||
|
<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;"> """</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;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other:</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;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.is_parallel(other):</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (other.point </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;">.point).cross(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction).length </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;">.direction.length</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> not</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.is_coplanar(other):</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;">.direction.cross(other.direction) </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;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point) </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;">.direction.cross(other.direction).length)</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;"> 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:#24292E;--shiki-dark:#E1E4E8;"> (other </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;">.point).cross(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction).length </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;">.direction.length</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:#032F62;--shiki-dark:#9ECBFF;">'Unsupported type.'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><h3 id="emsp-def-cal-intersection-self-other-line3-point3" tabindex="-1"> <em><strong>def</strong></em> <code>cal_intersection(self, other: 'Line3') -> 'Point3'</code> <a class="header-anchor" href="#emsp-def-cal-intersection-self-other-line3-point3" aria-label="Permalink to "&emsp; ***def*** `cal_intersection(self, other: 'Line3') -> 'Point3'`""></a></h3><p> 计算两条直线的交点。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
</code></pre><p>Returns:</p><pre><code>交点
|
|||
|
</code></pre><p>Raises:</p><pre><code>ValueError: 直线平行
|
|||
|
|
|||
|
ValueError: 直线不共面
|
|||
|
</code></pre><details><summary>源代码</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</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</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;"> 计算两条直线的交点。</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;"> ValueError: 直线不共面</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</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;">.is_parallel(other):</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;">'Lines are parallel and do not intersect.'</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:#D73A49;--shiki-dark:#F97583;"> not</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.is_coplanar(other):</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;">'Lines are not coplanar and do not intersect.'</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;">.point </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;">.direction.cross(other.direction) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.direction.cross(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point) </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;">.direction.cross(other.direction).length </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;">.direction</span></span></code></pre></div></details><h3 id="emsp-def-cal-perpendicular-self-point-point3-line3" tabindex="-1"> <em><strong>def</strong></em> <code>cal_perpendicular(self, point: 'Point3') -> 'Line3'</code> <a class="header-anchor" href="#emsp-def-cal-perpendicular-self-point-point3-line3" aria-label="Permalink to "&emsp; ***def*** `cal_perpendicular(self, point: 'Point3') -> 'Line3'`""></a></h3><p> 计算直线经过指定点p的垂线。</p><p>Args:</p><pre><code>point: 指定点
|
|||
|
</code></pre><p>Returns:</p><pre><code>垂线
|
|||
|
</code></pre><details><summary>源代码</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_perpendicular</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, point: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</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;"> 计算直线经过指定点p的垂线。</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;"> """</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Line3(point, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction.cross(point </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;">.point))</span></span></code></pre></div></details><h3 id="emsp-def-get-point-self-t-realnumber-point3" tabindex="-1"> <em><strong>def</strong></em> <code>get_point(self, t: RealNumber) -> 'Point3'</code> <a class="header-anchor" href="#emsp-def-get-point-self-t-realnumber-point3" aria-label="Permalink to "&emsp; ***def*** `get_point(self, t: RealNumber) -> 'Point3'`""></a></h3><p> 获取直线上的点。同一条直线,但起始点和方向向量不同,则同一个t对应的点不同。</p><p>Args:</p><pre><code>t: 参数t
|
|||
|
</code></pre><p>Returns:</p><pre><code>点
|
|||
|
</code></pre><details><summary>源代码</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;"> get_point</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, t: RealNumber) -> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</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;"> 获取直线上的点。同一条直线,但起始点和方向向量不同,则同一个t对应的点不同。</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;"> t: 参数t</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;"> """</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;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t </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;">.direction</span></span></code></pre></div></details><h3 id="emsp-def-get-parametric-equations-self-tuple-onesinglevarfunc-onesinglevarfunc-onesinglevarfunc" tabindex="-1"> <em><strong>def</strong></em> <code>get_parametric_equations(self) -> tuple[OneSingleVarFunc, OneSingleVarFunc, OneSingleVarFunc]</code> <a class="header-anchor" href="#emsp-def-get-parametric-equations-self-tuple-onesinglevarfunc-onesinglevarfunc-onesinglevarfunc" aria-label="Permalink to "&emsp; ***def*** `get_parametric_equations(self) -> tuple[OneSingleVarFunc, OneSingleVarFunc, OneSingleVarFunc]`""></a></h3><p> 获取直线的参数方程。</p><p>Returns:</p><pre><code>x(t), y(t), z(t)
|
|||
|
</code></pre><details><summary>源代码</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;"> get_parametric_equations</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self) -> tuple[OneSingleVarFunc, OneSingleVarFunc, OneSingleVarFunc]:</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;"> 获取直线的参数方程。</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;"> x(t), y(t), z(t)</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">lambda</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</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:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction.x </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">lambda</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</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:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction.y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">lambda</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.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;">.direction.z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> t)</span></span></code></pre></div></details><h3 id="emsp-def-is-approx-parallel-self-other-line3-epsilon-float-bool" tabindex="-1"> <em><strong>def</strong></em> <code>is_approx_parallel(self, other: 'Line3', epsilon: float) -> bool</code> <a class="header-anchor" href="#emsp-def-is-approx-parallel-self-other-line3-epsilon-float-bool" aria-label="Permalink to "&emsp; ***def*** `is_approx_parallel(self, other: 'Line3', epsilon: float) -> bool`""></a></h3><p> 判断两条直线是否近似平行。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
|
|||
|
epsilon: 误差
|
|||
|
</code></pre><p>Returns:</p><pre><code>是否近似平行
|
|||
|
</code></pre><details><summary>源代码</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_approx_parallel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, epsilon: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">float</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1e-06</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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;"> epsilon: 误差</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;"> """</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;">.direction.is_approx_parallel(other.direction, epsilon)</span></span></code></pre></div></details><h3 id="emsp-def-is-parallel-self-other-line3-bool" tabindex="-1"> <em><strong>def</strong></em> <code>is_parallel(self, other: 'Line3') -> bool</code> <a class="header-anchor" href="#emsp-def-is-parallel-self-other-line3-bool" aria-label="Permalink to "&emsp; ***def*** `is_parallel(self, other: 'Line3') -> bool`""></a></h3><p> 判断两条直线是否平行。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
</code></pre><p>Returns:</p><pre><code>是否平行
|
|||
|
</code></pre><details><summary>源代码</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;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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;"> """</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;">.direction.is_parallel(other.direction)</span></span></code></pre></div></details><h3 id="emsp-def-is-collinear-self-other-line3-bool" tabindex="-1"> <em><strong>def</strong></em> <code>is_collinear(self, other: 'Line3') -> bool</code> <a class="header-anchor" href="#emsp-def-is-collinear-self-other-line3-bool" aria-label="Permalink to "&emsp; ***def*** `is_collinear(self, other: 'Line3') -> bool`""></a></h3><p> 判断两条直线是否共线。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
</code></pre><p>Returns:</p><pre><code>是否共线
|
|||
|
</code></pre><details><summary>源代码</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_collinear</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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;"> """</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;">.is_parallel(other) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</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;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point).is_parallel(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction)</span></span></code></pre></div></details><h3 id="emsp-def-is-point-on-self-point-point3-bool" tabindex="-1"> <em><strong>def</strong></em> <code>is_point_on(self, point: 'Point3') -> bool</code> <a class="header-anchor" href="#emsp-def-is-point-on-self-point-point3-bool" aria-label="Permalink to "&emsp; ***def*** `is_point_on(self, point: 'Point3') -> bool`""></a></h3><p> 判断点是否在直线上。</p><p>Args:</p><pre><code>point: 点
|
|||
|
</code></pre><p>Returns:</p><pre><code>是否在直线上
|
|||
|
</code></pre><details><summary>源代码</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_point_on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, point: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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;"> """</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (point </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;">.point).is_parallel(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction)</span></span></code></pre></div></details><h3 id="emsp-def-is-coplanar-self-other-line3-bool" tabindex="-1"> <em><strong>def</strong></em> <code>is_coplanar(self, other: 'Line3') -> bool</code> <a class="header-anchor" href="#emsp-def-is-coplanar-self-other-line3-bool" aria-label="Permalink to "&emsp; ***def*** `is_coplanar(self, other: 'Line3') -> bool`""></a></h3><p> 判断两条直线是否共面。</p><p>充要条件:两直线方向向量的叉乘与两直线上任意一点的向量的点积为0。</p><p>Args:</p><pre><code>other: 另一条直线
|
|||
|
</code></pre><p>Returns:</p><pre><code>是否共面
|
|||
|
</code></pre><details><summary>源代码</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_coplanar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, other: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </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;"> """</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;"> 充要条件:两直线方向向量的叉乘与两直线上任意一点的向量的点积为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;"> 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;"> """</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;">.direction.cross(other.direction) </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;">.point </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> other.point) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span></span></code></pre></div></details><h3 id="emsp-def-simplify-self-none" tabindex="-1"> <em><strong>def</strong></em> <code>simplify(self) -> None</code> <a class="header-anchor" href="#emsp-def-simplify-self-none" aria-label="Permalink to "&emsp; ***def*** `simplify(self) -> None`""></a></h3><p> 简化直线方程,等价相等。</p><p>自体简化,不返回值。</p><p>按照可行性一次对x y z 化 0 处理,并对向量单位化</p><details><summary>源代码</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;"> simplify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self):</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;"> 简化直线方程,等价相等。</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 自体简化,不返回值。</span></span>
|
|||
|
<span class="line"></span>
|
|||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 按照可行性一次对x y z 化 0 处理,并对向量单位化</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.direction.normalize()</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;">.direction.x </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:#005CC5;--shiki-dark:#79B8FF;"> self</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:#005CC5;--shiki-dark:#79B8FF;"> 0</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;">.direction.y </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:#005CC5;--shiki-dark:#79B8FF;"> self</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:#005CC5;--shiki-dark:#79B8FF;"> 0</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;">.direction.z </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:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.point.z </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span></span></code></pre></div></details><h3 id="emsp-classmethod" tabindex="-1"> <em><strong>@classmethod</strong></em> <a class="header-anchor" href="#emsp-classmethod" aria-label="Permalink to "&emsp; ***@classmethod***""></a></h3><h3 id="emsp-def-from-two-points-cls-any-p1-point3-p2-point3-line3" tabindex="-1"> <em><strong>def</strong></em> <code>from_two_points(cls: Any, p1: 'Point3', p2: 'Point3') -> 'Line3'</code> <a class="header-anchor" href="#emsp-def-from-two-points-cls-any-p1-point3-p2-point3-line3" aria-label="Permalink to "&emsp; ***def*** `from_two_points(cls: Any, p1: 'Point3', p2: 'Point3') -> 'Line3'`""></a></h3><p> 工厂函数 由两点构造直线。</p><p>Args:</p><pre><code>p1: 点1
|
|||
|
|
|||
|
p2: 点2
|
|||
|
</code></pre><p>Returns:</p><pre><code>直线
|
|||
|
</code></pre><details><summary>源代码</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_points</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(cls, p1: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, p2: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Point3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Line3'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</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;"> 工厂函数 由两点构造直线。</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;"> 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;"> """</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:#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:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> cls</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(p1, direction)</span></span></code></pre></div></details><h3 id="var-direction-p2-p1" tabindex="-1"><em><strong>var</strong></em> <code>direction = p2 - p1</code> <a class="header-anchor" href="#var-direction-p2-p1" aria-label="Permalink to "***var*** `direction = p2 - p1`""></a></h3><h3 id="var-s-line3" tabindex="-1"><em><strong>var</strong></em> <code>s = 'Line3: '</code> <a class="header-anchor" href="#var-s-line3" aria-label="Permalink to "***var*** `s = 'Line3: '`""></a></h3></div></div></main><footer class="VPDocFooter" data-v-aa782c77 data-v-f33b051d><!--[--><!--]--><!----><!----></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|||
|
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api-ex.md\":\"DOsKaL8H\",\"api_index.md\":\"CsKClHFh\",\"api_mp_math_angle.md\":\"9eUTSIe4\",\"api_mp_math_const.md\":\"Bhz27OPg\",\"api_mp_math_equation.md\":\"xiyFVY1c\",\"api_mp_math_index.md\":\"DTIfeUA1\",\"api_mp_math_line.md\":\"BybnyRUL\",\"api_mp_math_mp_math_typing.md\":\"DXaadYgy\",\"api_mp_math_plane.md\":\"Cdj0PlKB\",\"api_mp_math_point.md\":\"D3f-vzVt\",\"api_mp_math_segment.md\":\"DIViBThe\",\"api_mp_math_utils.md\":\"CDwq4icO\",\"api_mp_math_vector.md\":\"BgK1TmFY\",\"api_particle_index.md\":\"BqH-w2FR\",\"api_presets_index.md\":\"CvgR5vOS\",\"api_presets_model_index.md\":\"D1iZ1qEr\",\"index.md\":\"CJvRmMfL\",\"md-ex.md\":\"BX0WqOqv\"}");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\"}]},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-Hans\",\"description\":\"一个用于Minecraft粒子计算和生成的库\",\"themeConfig\":{}},\"en\":{\"label\":\"English\",\"lang\":\"en-US\",\"description\":\"A library made for Minecraft particle generation\",\"themeConfig\":{}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|