don't split ratio
This commit is contained in:
parent
b7a86467d8
commit
091e8a4453
@ -1,3 +1,4 @@
|
||||
use strafesnet_common::integer::Planar64;
|
||||
use strafesnet_common::{model,integer};
|
||||
use strafesnet_common::integer::{vec3::Vector3,Fixed,Ratio};
|
||||
|
||||
@ -81,12 +82,12 @@ fn planes_to_faces(face_list:std::collections::HashSet<Face>)->Result<Faces,Plan
|
||||
// test if any *other* faces occlude the intersection
|
||||
for &new_face in &remaining_face_refs{
|
||||
// new face occludes intersection point
|
||||
if new_face.dot*intersection.den<new_face.normal.dot(intersection.num){
|
||||
if (new_face.dot.fix_2()/Planar64::ONE).lt_ratio(new_face.normal.dot(intersection.num)/intersection.den){
|
||||
// replace one of the faces with the new face
|
||||
// dont' try to replace face0 because we are exploring that face in particular
|
||||
if let Some(new_intersection)=solve3(face0,new_face,face2){
|
||||
// face1 does not occlude (or intersect) the new intersection
|
||||
if face1.dot*new_intersection.den>face1.normal.dot(new_intersection.num){
|
||||
if (face1.dot.fix_2()/Planar64::ONE).gt_ratio(face1.normal.dot(intersection.num)/intersection.den){
|
||||
remaining_face_refs.remove(new_face);
|
||||
face1=new_face;
|
||||
intersection=new_intersection;
|
||||
@ -95,7 +96,7 @@ fn planes_to_faces(face_list:std::collections::HashSet<Face>)->Result<Faces,Plan
|
||||
}
|
||||
if let Some(new_intersection)=solve3(face0,face1,new_face){
|
||||
// face2 does not occlude (or intersect) the new intersection
|
||||
if face2.dot*new_intersection.den>face2.normal.dot(new_intersection.num){
|
||||
if (face2.dot.fix_2()/Planar64::ONE).gt_ratio(face2.normal.dot(intersection.num)/intersection.den){
|
||||
remaining_face_refs.remove(new_face);
|
||||
face2=new_face;
|
||||
intersection=new_intersection;
|
||||
@ -122,7 +123,7 @@ fn planes_to_faces(face_list:std::collections::HashSet<Face>)->Result<Faces,Plan
|
||||
}
|
||||
if let Some(new_intersection)=solve3(new_face,face1,face2){
|
||||
// face0 does not occlude (or intersect) the new intersection
|
||||
if face0.dot*new_intersection.den>face0.normal.dot(new_intersection.num){
|
||||
if (face0.dot.fix_2()/Planar64::ONE).lt_ratio(face0.normal.dot(intersection.num)/intersection.den){
|
||||
// abort! reject face0 entirely
|
||||
continue 'face;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user