src/cube.rs

changeset 28
334fd47c482e
parent 15
2f4af30af476
equal deleted inserted replaced
27:29859ffd0ac1 28:334fd47c482e
301 type Tangent = Point; 301 type Tangent = Point;
302 302
303 fn exp(self, tangent : &Self::Tangent) -> Self { 303 fn exp(self, tangent : &Self::Tangent) -> Self {
304 let mut face = self.face; 304 let mut face = self.face;
305 let mut point = self.point; 305 let mut point = self.point;
306 let mut dest = self.point + tangent; 306 let mut tan = *tangent;
307 loop { 307 let dest = loop {
308 let dest = point + tan;
308 let (next_face, cross) = face.find_crossing(&point, &dest); 309 let (next_face, cross) = face.find_crossing(&point, &dest);
309 if next_face == face { 310 if next_face == face {
310 break 311 break dest
311 } 312 }
313 tan -= cross-point;
312 point = next_face.convert_adjacent(face, &cross).unwrap(); 314 point = next_face.convert_adjacent(face, &cross).unwrap();
313 dest = next_face.convert_adjacent(face, &dest).unwrap(); 315 //dest = next_face.convert_adjacent(face, &dest).unwrap();
314 face = next_face; 316 face = next_face;
315 } 317 };
316 OnCube { face, point : dest } 318 OnCube { face, point : dest }
317 } 319 }
318 320
319 fn log(&self, other : &Self) -> Self::Tangent { 321 fn log(&self, other : &Self) -> Self::Tangent {
320 self.log_dist(other).0 322 self.log_dist(other).0

mercurial