diff options
author | Aki <please@ignore.pl> | 2024-03-12 22:07:03 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2024-03-12 22:07:36 +0100 |
commit | 81bb6873f1c0291fecbf6e429ad15ac3db66a4c0 (patch) | |
tree | fd7552ecabeeffb45a1fbe3730ab62bc7a64dd85 /third-party/Opcode/Ice/IceSegment.h | |
parent | f43d32d6d2cc7ecd04f4f06f20d5a6fc2c87c9ae (diff) | |
download | starshatter-81bb6873f1c0291fecbf6e429ad15ac3db66a4c0.zip starshatter-81bb6873f1c0291fecbf6e429ad15ac3db66a4c0.tar.gz starshatter-81bb6873f1c0291fecbf6e429ad15ac3db66a4c0.tar.bz2 |
Legal notices updated
Rename contrib -> third-party intendes to express the origin and purpose
of that part of the code better. I plan to readd contrib/ again but with
more in-project things like bash-completions, dev workflow scripts etc.
Diffstat (limited to 'third-party/Opcode/Ice/IceSegment.h')
-rw-r--r-- | third-party/Opcode/Ice/IceSegment.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/third-party/Opcode/Ice/IceSegment.h b/third-party/Opcode/Ice/IceSegment.h new file mode 100644 index 0000000..72ddceb --- /dev/null +++ b/third-party/Opcode/Ice/IceSegment.h @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/** + * Contains code for segments. + * \file IceSegment.h + * \author Pierre Terdiman + * \date April, 4, 2000 + */ +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Include Guard +#ifndef __ICESEGMENT_H__ +#define __ICESEGMENT_H__ + + class ICEMATHS_API IceSegment + { + public: + //! Constructor + inline_ IceSegment() {} + //! Constructor + inline_ IceSegment(const IcePoint& p0, const IcePoint& p1) : mP0(p0), mP1(p1) {} + //! Copy constructor + inline_ IceSegment(const IceSegment& seg) : mP0(seg.mP0), mP1(seg.mP1) {} + //! Destructor + inline_ ~IceSegment() {} + + inline_ const IcePoint& GetOrigin() const { return mP0; } + inline_ IcePoint ComputeDirection() const { return mP1 - mP0; } + inline_ void ComputeDirection(IcePoint& dir) const { dir = mP1 - mP0; } + inline_ float ComputeLength() const { return mP1.Distance(mP0); } + inline_ float ComputeSquareLength() const { return mP1.SquareDistance(mP0); } + + inline_ void SetOriginDirection(const IcePoint& origin, const IcePoint& direction) + { + mP0 = mP1 = origin; + mP1 += direction; + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /** + * Computes a IcePoint on the segment + * \param pt [out] IcePoint on segment + * \param t [in] IcePoint's parameter [t=0 => pt = mP0, t=1 => pt = mP1] + */ + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + inline_ void ComputePoint(IcePoint& pt, float t) const { pt = mP0 + t * (mP1 - mP0); } + + float SquareDistance(const IcePoint& IcePoint, float* t=null) const; + inline_ float Distance(const IcePoint& IcePoint, float* t=null) const { return sqrtf(SquareDistance(IcePoint, t)); } + + IcePoint mP0; //!< Start of segment + IcePoint mP1; //!< End of segment + }; + +#endif // __ICESEGMENT_H__ |