mirror of
https://github.com/3b1b/manim.git
synced 2025-07-31 14:03:59 +08:00
Calculate unit normal more directly
This commit is contained in:
@ -39,7 +39,6 @@ const float ANGLE_THRESHOLD = 1e-3;
|
|||||||
// Analog of import for manim only
|
// Analog of import for manim only
|
||||||
#INSERT get_xy_to_uv.glsl
|
#INSERT get_xy_to_uv.glsl
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT get_gl_Position.glsl
|
||||||
#INSERT get_unit_normal.glsl
|
|
||||||
#INSERT finalize_color.glsl
|
#INSERT finalize_color.glsl
|
||||||
|
|
||||||
|
|
||||||
@ -67,12 +66,19 @@ void emit_simple_triangle(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void emit_pentagon(vec3 p0, vec3 p1, vec3 p2, vec3 normal){
|
void emit_pentagon(
|
||||||
// Tangent vectors
|
// Triangle vertices
|
||||||
vec3 t01 = normalize(p1 - p0);
|
vec3 p0,
|
||||||
vec3 t12 = normalize(p2 - p1);
|
vec3 p1,
|
||||||
|
vec3 p2,
|
||||||
// Vectors perpendicular to the curve in the plane of the curve pointing outside the curve
|
// Unit tangent vector
|
||||||
|
vec3 t01,
|
||||||
|
vec3 t12,
|
||||||
|
// Unit normal
|
||||||
|
vec3 normal
|
||||||
|
){
|
||||||
|
// Vectors perpendicular to the curve in the plane of the curve
|
||||||
|
// pointing outside the curve
|
||||||
vec3 p0_perp = cross(t01, normal);
|
vec3 p0_perp = cross(t01, normal);
|
||||||
vec3 p2_perp = cross(t12, normal);
|
vec3 p2_perp = cross(t12, normal);
|
||||||
|
|
||||||
@ -124,9 +130,11 @@ void main(){
|
|||||||
vec3 p0 = verts[0];
|
vec3 p0 = verts[0];
|
||||||
vec3 p1 = verts[1];
|
vec3 p1 = verts[1];
|
||||||
vec3 p2 = verts[2];
|
vec3 p2 = verts[2];
|
||||||
unit_normal = get_unit_normal(p0, p1, p2);
|
vec3 t01 = normalize(p1 - p0);
|
||||||
|
vec3 t12 = normalize(p2 - p1);
|
||||||
|
unit_normal = normalize(cross(t01, t12));
|
||||||
orientation = v_orientation[1];
|
orientation = v_orientation[1];
|
||||||
|
|
||||||
emit_pentagon(p0, p1, p2, unit_normal);
|
emit_pentagon(p0, p1, p2, t01, t12, unit_normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user