在P5 js中找到围绕其中心点旋转的正方形平面的顶点坐标(x,y,z)
Finding the coordinates (x,y,z) of vertices of a square plane rotated about its center point in P5 js
我正在 P5.js 中重新创建圆锥曲线并且需要找到方形平面的方程。
我知道方形平面的大小,以及每个轴从其中心点旋转的度数(由 P5 滑块指示)。
我想计算这个正方形平面的四个顶点的坐标 (x, y, z),给定已知的旋转值。
这是我的P5素描。
https://editor.p5js.org/inglog/sketches/HsMUb8UPA
我想用这些坐标为平面创建一个方程,形式为ax+by+cz+d=0
一旦我有了正方形的顶点,我将使用这个计算器来计算平面的方程:https://keisan.casio.com/exec/system/1223596129)
关于如何计算平面顶点坐标的任何建议,给定围绕其中心点的已知旋转?
这与圆柱坐标和笛卡尔坐标之间的转换有关吗?我也想知道这个答案是否与解决方案有关(Rotating vertices about point)
提前感谢您的阅读。
由于有一个唯一的平面穿过一组给定的 3 个(非共线)点,因此您不需要正方形的顶点来找到平面的方程。你只需要飞机上的3个随机点。
答案:
A = (0, slider.value(), 0)
B = (1, slider.value(), 0)
C = (0, slider.value() - sin(slider2.value()), cos(slider2.value()))
从这里,您可以获得您提供的网站上描述的平面方程:
AB = (1, 0, 0)
AC = (0, -sin, cos)
AB x AC = (0, -cos, -sin)
等式:
0x - cos(slider2.value())*y - sin(slider2.value())*z + cos(slider2.value())*slider.value() = 0
简化为
cos(slider2.value())*(y - slider.value()) + sin(slider2.value())*z = 0
或
z = (slider.value() - y)/tan(slider2.value())
我大约 99.9% 确定这是正确的等式。我在你的程序中用它在平面上叠加点,看起来不错。
我是怎么拿到三分的:
我们知道中心会有一个点,在y轴上。此时,x=z=0且y=slider.value()
。那就是A点:(0, slider.value(), 0)
.
我们还知道该平面与 y=slider.value()
定义的直线中的 xy 平面相交。所以B点可以是这条直线上的任意一点,我们任意选择(1, slider.value(), 0)
.
第三点是最难的,因为我们不能让z=0,还要考虑角度。从中心开始,让我们沿着平面走一个单位,保持 x=0 并沿正 z 方向移动。
很难通过文本表达这一点,但这是一个经典的单位圆问题:x=0,y、z 在以 A 点为中心的单位圆上:C = (0, slider.value() - sin(slider2.value()), cos(slider2.value()))
.
我正在 P5.js 中重新创建圆锥曲线并且需要找到方形平面的方程。
我知道方形平面的大小,以及每个轴从其中心点旋转的度数(由 P5 滑块指示)。
我想计算这个正方形平面的四个顶点的坐标 (x, y, z),给定已知的旋转值。
这是我的P5素描。
https://editor.p5js.org/inglog/sketches/HsMUb8UPA
我想用这些坐标为平面创建一个方程,形式为ax+by+cz+d=0
一旦我有了正方形的顶点,我将使用这个计算器来计算平面的方程:https://keisan.casio.com/exec/system/1223596129)
关于如何计算平面顶点坐标的任何建议,给定围绕其中心点的已知旋转?
这与圆柱坐标和笛卡尔坐标之间的转换有关吗?我也想知道这个答案是否与解决方案有关(Rotating vertices about point)
提前感谢您的阅读。
由于有一个唯一的平面穿过一组给定的 3 个(非共线)点,因此您不需要正方形的顶点来找到平面的方程。你只需要飞机上的3个随机点。
答案:
A = (0, slider.value(), 0)
B = (1, slider.value(), 0)
C = (0, slider.value() - sin(slider2.value()), cos(slider2.value()))
从这里,您可以获得您提供的网站上描述的平面方程:
AB = (1, 0, 0)
AC = (0, -sin, cos)
AB x AC = (0, -cos, -sin)
等式:
0x - cos(slider2.value())*y - sin(slider2.value())*z + cos(slider2.value())*slider.value() = 0
简化为
cos(slider2.value())*(y - slider.value()) + sin(slider2.value())*z = 0
或
z = (slider.value() - y)/tan(slider2.value())
我大约 99.9% 确定这是正确的等式。我在你的程序中用它在平面上叠加点,看起来不错。
我是怎么拿到三分的:
我们知道中心会有一个点,在y轴上。此时,x=z=0且y=slider.value()
。那就是A点:(0, slider.value(), 0)
.
我们还知道该平面与 y=slider.value()
定义的直线中的 xy 平面相交。所以B点可以是这条直线上的任意一点,我们任意选择(1, slider.value(), 0)
.
第三点是最难的,因为我们不能让z=0,还要考虑角度。从中心开始,让我们沿着平面走一个单位,保持 x=0 并沿正 z 方向移动。
很难通过文本表达这一点,但这是一个经典的单位圆问题:x=0,y、z 在以 A 点为中心的单位圆上:C = (0, slider.value() - sin(slider2.value()), cos(slider2.value()))
.