mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	WIP: MutablePolygon - linked list based polygon implementation
allowing rapid insertion and removal of points. WIP: porting smooth_outward() from Cura.
This commit is contained in:
		
							parent
							
								
									409849d238
								
							
						
					
					
						commit
						5276bd98d7
					
				
					 6 changed files with 632 additions and 5 deletions
				
			
		|  | @ -56,11 +56,21 @@ typedef Eigen::Transform<double, 3, Eigen::Affine, Eigen::DontAlign> Transform3d | |||
| 
 | ||||
| inline bool operator<(const Vec2d &lhs, const Vec2d &rhs) { return lhs(0) < rhs(0) || (lhs(0) == rhs(0) && lhs(1) < rhs(1)); } | ||||
| 
 | ||||
| // One likely does not want to perform the cross product with a 32bit accumulator.
 | ||||
| //inline int32_t cross2(const Vec2i32 &v1, const Vec2i32 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); }
 | ||||
| inline int64_t cross2(const Vec2i64 &v1, const Vec2i64 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } | ||||
| inline float   cross2(const Vec2f   &v1, const Vec2f   &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } | ||||
| inline double  cross2(const Vec2d   &v1, const Vec2d   &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } | ||||
| template<int Options> | ||||
| int32_t cross2(const Eigen::MatrixBase<Eigen::Matrix<int32_t, 2, 1, Options>> &v1, const Eigen::MatrixBase<Eigen::Matrix<int32_t, 2, 1, Options>> &v2) = delete; | ||||
| 
 | ||||
| template<typename T, int Options> | ||||
| inline T cross2(const Eigen::MatrixBase<Eigen::Matrix<T, 2, 1, Options>> &v1, const Eigen::MatrixBase<Eigen::Matrix<T, 2, 1, Options>> &v2) | ||||
| { | ||||
|     return v1(0) * v2(1) - v1(1) * v2(0); | ||||
| } | ||||
| 
 | ||||
| template<typename Derived, typename Derived2> | ||||
| inline typename Derived::Scalar cross2(const Eigen::MatrixBase<Derived> &v1, const Eigen::MatrixBase<Derived2> &v2) | ||||
| { | ||||
|     static_assert(std::is_same<typename Derived::Scalar, typename Derived2::Scalar>::value, "cross2(): Scalar types of 1st and 2nd operand must be equal."); | ||||
|     return v1(0) * v2(1) - v1(1) * v2(0); | ||||
| } | ||||
| 
 | ||||
| template<typename T, int Options> | ||||
| inline Eigen::Matrix<T, 2, 1, Eigen::DontAlign> perp(const Eigen::MatrixBase<Eigen::Matrix<T, 2, 1, Options>> &v) { return Eigen::Matrix<T, 2, 1, Eigen::DontAlign>(- v.y(), v.x()); } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Bubnik
						Vojtech Bubnik