gpt4 book ai didi

python - 给定 X 坐标,如何计算一个点的 Y 坐标,使其位于贝塞尔曲线上

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:57 32 4
gpt4 key购买 nike

我有一个点(粉色圆圈),它有一个已知的 X 坐标和一个已知的 Y 坐标,但 Y 坐标> 坐标不正确。它当前位于目标贝塞尔曲线(部分位于白色正方形中的曲线)所在的点(如果它是两点之间的一条线)。我需要为我的圆圈点计算正确的 Y 坐标,以便它最终出现在红十字上。

enter image description here

我是一名 C# 程序员,而不是数学家,因此,如果这个答案可以用代码来表达,或者用方程中涉及的每个参数的解释来表达,那么这对我来说将是最有意义的。如果我能得到我想要的答案,我什至可能最终使用 Python 脚本来扩展 Blender。

更新:我修改了问题及其图像,以更好地表达我遇到的问题。我只是想要一种方法来找出红十字上的 Y 坐标。考虑到这一点,它可能是三角函数,与贝塞尔曲线无关,但我需要有一种方法来计算出放置在该曲线上任何点的标记的 Y 坐标,不仅仅是在它的第一段/行上。

最佳答案

真正的数学答案:如果你想要精确的答案,你需要数学,终点;贝塞尔曲线是参数曲线,单个 x 值可以有多个 y 值(反之亦然),因此如果您没有真正了解您的内容,就无法找到这些曲线。正在做。

作为编程练习,更简单的方法是简单地为每个对象构建坐标LookUp T曲线(例如 {t=0 -> {x:...,y:...}, t=0.01 -> {x:...y:...}, ...}),然后只需在 LUT 中搜索给定的 xy 值即可找到(可能是多个)相应的 yx值。如果您需要某些 xy 值,则可以对 x 对 LUT 进行排序,然后进行二分搜索以查找最佳匹配。如果您需要 x 来代替某些 y,则可以对 y 进行排序并执行相同的操作。

漂亮又简单。

但是,如果您想要精确解决方案,作为程序员,您确实应该关心这一点,那么您想要的就是沿着您试图查找值的“线”重新调整曲线的方向(例如,“某些 x 的所有 y 值”意味着您正在寻找曲线和直线之间的所有交点 (x=a, y=-inf)--(x=a,y=inf) ),然后您只需检查进行相交检测时获得的 t 值即可。

如果您想在这里获得真正的答案,请查看 intersection detection between curves and lines 上的《贝塞尔曲线入门》部分。 (这又依赖于有关 root finding 的部分)。如果您正在处理三次曲线,则需要了解如何 align curves这样查找交集就简化为查找根,之后您需要运行卡尔达诺的算法来查找您感兴趣的(可能是三个)值。

关于python - 给定 X 坐标,如何计算一个点的 Y 坐标,使其位于贝塞尔曲线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141955/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com