这个问题非常类似于:二次贝塞尔曲线:给定X的Y坐标?.但这个是立方体......
我正在使用getBezier函数来计算贝塞尔曲线的Y坐标.贝塞尔曲线始终在(0,0)处开始,始终在(1,1)处结束.
我知道X值,所以我试图将其插入百分比(我是一个白痴).但这显然不起作用.你能提供解决方案吗?这是必要的,它是一个白痴证明功能.喜欢:
function yFromX (c2x,c2y,c3x,c3y) { //c1 = (0,0) and c4 = (1,1), domainc2 and domainc3 = [0,1]
//your magic
return y;
}
Run Code Online (Sandbox Code Playgroud) 我只想通过片段着色器绘制贝塞尔曲线以连接编辑器中的节点。我知道定义贝塞尔曲线的所有 4 个点。并且为每个像素调用片段着色器,所以我可以检查:如果 gl_Coord.x 的“t”在 0 和 1 之间,然后将 frag_color 设置为红色。我想避免着色器中效率低下的循环。我认为最好的方法是检查曲线上的点。但是如何为贝塞尔曲线做到这一点?
是否可以从三次贝塞尔方程表达“t”变量?
x = ((1-t)^3 * p0.x) + (3 * (1-t)^2 * t * p1.x) + (3 * (1 - t) * t^2 * p2.x) + (t^3 * p3.x);
t = ?
Run Code Online (Sandbox Code Playgroud)
网站 Wolfram Aplha 给我那个公式(在 GetBezierT 函数中)。但是公式给了我错误的“t”值,我有一半的抛物线而不是曲线:
#version 150
.....
layout (origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;
out vec4 frag_color;
.....
vec4 BackgroundColor = vec4(0.15, 0.15, 0.15, 1.0);
vec2 p0 = vec2(61.0f,87.0f);
vec2 p1 = vec2(181.0f, 39.0f);
vec2 p2 = …Run Code Online (Sandbox Code Playgroud)