Skip to content

Commit 0de3ee3

Browse files
Added testing for ngons and non-planar faces
1 parent 53293e7 commit 0de3ee3

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

src/geometry_primitives.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ end
175175

176176
function normals(vertices::AbstractVector{<:Point{3}}, faces::AbstractVector{<: NgonFace},
177177
::Type{NormalType}) where {NormalType}
178-
println("WOOOHOOOO")
178+
179179
normals_result = zeros(NormalType, length(vertices))
180180
for face in faces
181181
v = vertices[face]

test/geometrytypes.jl

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,12 +351,31 @@ end
351351
ns = normals(c)
352352
# caps without mantle
353353
f_ns = face_normals(coordinates(c), filter!(f -> f isa TriangleFace, faces(c)))
354-
@test all(n -> n == values(ns)[end-1], values(f_ns)[1:15])
355-
@test all(n -> n == values(ns)[end], values(f_ns)[16:end])
354+
@test all(n -> n values(ns)[end-1], values(f_ns)[1:15])
355+
@test all(n -> n values(ns)[end], values(f_ns)[16:end])
356356
# Mantle without caps
357357
v_ns = normals(coordinates(c), filter!(f -> f isa QuadFace, faces(c)))[1:end-2]
358358
@test values(ns)[1:15] v_ns[1:15]
359359
@test values(ns)[1:15] v_ns[16:30] # repeated via FaceView in ns
360+
361+
# Planar QuadFace with colinear edge
362+
v = [Point{3,Float64}(0.0,0.0,0.0),Point{3,Float64}(1.0,0.0,0.0),Point{3,Float64}(2.0,0.0,0.0),Point{3,Float64}(2.0,1.0,0.0)]
363+
f = [QuadFace{Int}(1,2,3,4)]
364+
n = normals(v,f)
365+
@test all(n_i -> n_i [0.0,0.0,1.0], n)
366+
367+
# Planar NgonFace (5-sided) with colinear edge
368+
v = [Point{3,Float64}(0.0,0.0,0.0),Point{3,Float64}(1.0,0.0,0.0),Point{3,Float64}(2.0,0.0,0.0),Point{3,Float64}(2.0,1.0,0.0),Point{3,Float64}(2.0,0.5,0.0)]
369+
f = [NgonFace{5,Int}(1,2,3,4,5)]
370+
n = normals(v,f)
371+
@test all(n_i -> n_i [0.0,0.0,1.0], n)
372+
373+
# Non-planar NgonFace (6 sided), features equal up and down variations resulting in z-dir average face_normal
374+
t = range(0.0,2*pi-(2*pi)/6,6)
375+
v = [Point{3,Float64}(cos(t[i]),sin(t[i]),iseven(i)) for i in eachindex(t)]
376+
f = [NgonFace{6,Int}(1,2,3,4,5,6)]
377+
n = normals(v,f)
378+
@test all(n_i -> n_i [0.0,0.0,1.0], n)
360379
end
361380

362381
@testset "HyperSphere" begin

0 commit comments

Comments
 (0)