【问题标题】:corners of angled rect in 3d3d 角度矩形的角
【发布时间】:2020-11-24 22:22:43
【问题描述】:

我在 3d 空间中有 2 个点(具有相同的 y 坐标)。我会打电话给他们c 和m。我想找到宽度为w 的正方形的角点(图中标记为p1-p4)。重要的是,正方形不平行于 x 轴。如果是的话,(以p1 为例)我可以这样做:

p1.x = m.x + w / 2
p1.y = m.y + w / 2
p1.z = m.z

我将如何对有角的正方形做同样的事情?这些都是给定的点:

m; c

和长度:

w; d

【问题讨论】:

    标签: python-3.x geometry coordinates trigonometry


    【解决方案1】:

    有多种方法可以做到这一点,但这是一种方法。

    如果保证两个点的y值相同,你应该可以做到如下。

    取'm - c'并称之为u。规范化u。然后取u和y轴的叉积得到v,一个平行于xz平面且垂直于u的向量。 (这可以优化,但不太重要。)然后取 u 和 v 的叉积得到第三个向量,w。请注意,您可以使用“m - c”或“c - m”,或者对叉积参数使用不同的顺序,它仍然可以工作,但生成的向量可能指向不同的方向(但只能指向相反的方向) .您还可以在过程中的不同点进行归一化,并在最后得到相同的结果。

    一旦有了 m、v 和 w,您就可以使用一些基本的向量数学来计算角点。

    [编辑:我看到您有一个名为“w”的变量,所以我应该澄清一下,我的示例中的“w”与您的“w”不同。至于你的 'w' 和 'd',它们会在我最后提到的向量数学中考虑在内。]

    【讨论】:

    • 你能不能看看如何处理点 c = (100,100,100); m = (120,100,130)?我就是想不通。
    • 这是家庭作业的一部分吗?无论哪种方式,我都会尽力提供帮助 - 如果是家庭作业,我只想小心直接给出答案。
    • 哈哈哈,不,不是为了作业。这只是一个个人项目。我正在尝试使用透视图在 3d 空间(我开始工作)中渲染形状。 (github.com/DinosaurMoritz/3dConsoleRender) 现在我想转弯,因为到目前为止我只能上下左右移动。我在rDis(渲染距离)处得到一个正方形,然后从那个平面上的每个点我画一条线到c(相机),如果它被截获,平面上的那个点是黑暗的。有了这个,我试图让飞机,但有角度。 (我是学生,但来自高中和德国)
    • 我不确定完整的解释是否会在 cmets 中成为主题,但如果您仍然遇到问题,也许您可​​以发布您坚持的步骤。第一步是向量减法,这应该很简单(但如果您不清楚,请随时询问)。然后规范化(如果您决定先规范化)。然后是上面描述的叉积,等等。如果你能指定你遇到问题的地方,有人可能会提供帮助。
    • 1.根据我在第一条评论中建议的要点:u=(20,0,30) 2. 标准化:(0.55,0,0.83) 现在我不知道如何继续。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多