- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 C# (Unity) 中以曲线的形式实现连接。我希望得到与 Miro.com 中的实现尽可能相似的结果(见截图)。
附加曲线后,我计算三次贝塞尔曲线的路径。对于第一段,使用 anchor 和它连接的对象的偏移量。在这个阶段没有问题。
问题 :当通过单击并拖动线段的蓝色点之一(见截图)将曲线分成段时,它在中间被分成两部分。在两条新曲线的交汇处,形成了一个新的交互(可移动)点,其控制点的切线和坐标未知。每次交互点的位置发生变化(下图中的白点)时,我都需要找到这些控制点的位置。此外,曲线在分割时不应彻底改变其位置,而不是形成循环,具有不同长度的控制点向量(我在这里不确定)并且表现得尽可能充分(就像在 Miro 的板上一样)。
我所说的控制点是指贝塞尔线段的 2 个不可见引导点。
我用黑色画了已知的控制点,用红色画了我需要找到的那些。 (Pn——交互点,Cn——控制点)
我试图找到它们的算法给出了不正确的控制点距离和方向。
测试了以下算法:
最佳答案
查找有用的资源以了解贝塞尔曲线 here和 here .
为了做你想做的事,我会尝试使用 Catmull-Rom 方法,我认为它比 Bezier 方法简单得多,这是 itween 中使用的方法。 Assets ,这是免费的,并且您实现了很多功能。
如果你想坚持贝塞尔曲线并找到控制点,我会告诉你我会怎么做才能找到它们。
对于 2 个控制点贝塞尔曲线的情况:
P = (1-t)P1 + tP2
要了解控制点 P1(x1,y1) 和 P2(x2,y2),您需要将方程应用于曲线的已知点。考虑到 2D 方程是矢量的,所以每个点都提供了 2 个方程,一个用于 x,一个用于 y,每个点都有 4 个未知数,x 和 y。
因此,对于曲线的第一个节点 (t=0),您将拥有:
Px = (1-0)P1x + 0*P2x
Py = (1-0)P1y + 0*P2y
对于最后一点 (t=1)
Px = (1-1)P1x + 1*P2x
Py = (1-1)P1y + 1*P2y
使用这 4 个方程,我将尝试实现控制点 P1 和 P2。您可以使用 t=0 和 t=1 来完成它,它们是您知道曲线的假设点以及由于 t 值而简化数学的那些点,但是只要您知道这些点,您就应该能够使用任何点确定 t 曲线中的坐标。
如果曲线是 3 个控制点的贝塞尔曲线,则 3 个控制点需要 6 个方程,依此类推。
我认为最好的方法是复合曲线组合曲线,并计算每个块的控制点,但我不确定这一点。
一旦理解了数学并实现了控制点,如果成功,我会尝试在代码中实现它。
关于c# - 如何找到贝塞尔曲线的控制点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65637883/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!