在三维坐标中画一个圆
draw a circle in three dimensional coordiantes
我想画一个三维坐标的圆,给定一个向量,向量与圆的交角为90度,交点为圆心。半径可以参数化。编辑:我正在为我的世界编写一个服务器插件。至此,我已经制作了一把可以投掷的剑。我想添加一些装饰。我希望在剑之后有一个圆形的痕迹。但我不明白如何在 3D 坐标中绘制一个圆,使剑投掷矢量与圆心的交角为 90 度。半径可以任意,向量可以进入圆心。我以为我可以在 3 个轴上旋转 throw 矢量并得到一个圆,但没有任何效果。我需要一个可以画给定圆的方程式。
您有中心 C
、法向量 N
、半径 R
。看来你想在圆周上加分
首先在圆平面上得到一些基向量。
可能的方式:
显示具有最大幅度和第二幅度的正常分量。例如,abs(N.X)
最大,abs(N.Z)
次之,abs(N.Y)
最小。使最小的分量为零,交换两个较大的分量,并取反最大的分量。对于此示例,基本向量将为:
A = (N.Z, 0, -N.X)
它垂直于法线,因此位于圆平面内。
然后使用vector product得到下一个基向量(B
将垂直于A
和N
,它也在平面内)
B = N x A
现在规范化向量 A
和 B
(使它们成为单位长度)
A = A / len(A)
B = B / len(B)
你可以用参数方程得到圆周上的任何一点,其中 t
在 0..2*Pi
范围内变化
P(t) = C + R * A * Cos(t) + R * B * Sin(t)
或在组件中:
P.X = C.X + R * A.X * Cos(t) + R * B.X * Sin(t)
and so on
我想画一个三维坐标的圆,给定一个向量,向量与圆的交角为90度,交点为圆心。半径可以参数化。编辑:我正在为我的世界编写一个服务器插件。至此,我已经制作了一把可以投掷的剑。我想添加一些装饰。我希望在剑之后有一个圆形的痕迹。但我不明白如何在 3D 坐标中绘制一个圆,使剑投掷矢量与圆心的交角为 90 度。半径可以任意,向量可以进入圆心。我以为我可以在 3 个轴上旋转 throw 矢量并得到一个圆,但没有任何效果。我需要一个可以画给定圆的方程式。
您有中心 C
、法向量 N
、半径 R
。看来你想在圆周上加分
首先在圆平面上得到一些基向量。
可能的方式:
显示具有最大幅度和第二幅度的正常分量。例如,abs(N.X)
最大,abs(N.Z)
次之,abs(N.Y)
最小。使最小的分量为零,交换两个较大的分量,并取反最大的分量。对于此示例,基本向量将为:
A = (N.Z, 0, -N.X)
它垂直于法线,因此位于圆平面内。
然后使用vector product得到下一个基向量(B
将垂直于A
和N
,它也在平面内)
B = N x A
现在规范化向量 A
和 B
(使它们成为单位长度)
A = A / len(A)
B = B / len(B)
你可以用参数方程得到圆周上的任何一点,其中 t
在 0..2*Pi
P(t) = C + R * A * Cos(t) + R * B * Sin(t)
或在组件中:
P.X = C.X + R * A.X * Cos(t) + R * B.X * Sin(t)
and so on