繁体   English   中英

在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()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM