p为到圆柱体中心的位置向量,h.x为圆柱体的半径,h.y为圆柱体的半高。设定圆柱体中心在坐标原点,沿y轴放置。
float Cylinder( vec3 p, vec2 h )
{
vec2 d = abs(vec2(length(p.xz),p.y)) - h;
return min(max(d.x,d.y),0.0) + length(max(d,0.0));
}
p为到圆柱体中心的位置向量,h.x为圆柱体的半径,h.y为圆柱体的半高。设定圆柱体中心在坐标原点,沿y轴放置。
float Cylinder( vec3 p, vec2 h )
{
vec2 d = abs(vec2(length(p.xz),p.y)) - h;
return min(max(d.x,d.y),0.0) + length(max(d,0.0));
}