00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00018
00019
00020
00022 #if !defined(ON_FPOINT_INC_)
00023 #define ON_FPOINT_INC_
00024
00025 class ON_Xform;
00026
00027 class ON_2fPoint;
00028 class ON_3fPoint;
00029 class ON_4fPoint;
00030
00031 class ON_2fVector;
00032 class ON_3fVector;
00033
00035
00036
00037
00038 class ON_CLASS ON_2fPoint
00039 {
00040 public:
00041 float x, y;
00042
00043 static const ON_2fPoint Origin;
00044
00045
00046 ON_2fPoint();
00047 ON_2fPoint(float x,float y);
00048
00049 ON_2fPoint(const ON_3fPoint& );
00050 ON_2fPoint(const ON_4fPoint& );
00051 ON_2fPoint(const ON_2fVector& );
00052 ON_2fPoint(const ON_3fVector& );
00053 ON_2fPoint(const float*);
00054
00055 ON_2fPoint(const ON_2dPoint& );
00056 ON_2fPoint(const ON_3dPoint& );
00057 ON_2fPoint(const ON_4dPoint& );
00058 ON_2fPoint(const ON_2dVector& );
00059 ON_2fPoint(const ON_3dVector& );
00060 ON_2fPoint(const double*);
00061
00062
00063 operator float*();
00064 operator const float*() const;
00065
00066
00067 ON_2fPoint& operator=(const ON_3fPoint&);
00068 ON_2fPoint& operator=(const ON_4fPoint&);
00069 ON_2fPoint& operator=(const ON_2fVector&);
00070 ON_2fPoint& operator=(const ON_3fVector&);
00071 ON_2fPoint& operator=(const float*);
00072
00073 ON_2fPoint& operator=(const ON_2dPoint&);
00074 ON_2fPoint& operator=(const ON_3dPoint&);
00075 ON_2fPoint& operator=(const ON_4dPoint&);
00076 ON_2fPoint& operator=(const ON_2dVector&);
00077 ON_2fPoint& operator=(const ON_3dVector&);
00078 ON_2fPoint& operator=(const double*);
00079
00080 ON_2fPoint& operator*=(float);
00081 ON_2fPoint& operator/=(float);
00082 ON_2fPoint& operator+=(const ON_2fPoint&);
00083 ON_2fPoint& operator+=(const ON_2fVector&);
00084 ON_2fPoint& operator+=(const ON_3fVector&);
00085 ON_2fPoint& operator-=(const ON_2fPoint&);
00086 ON_2fPoint& operator-=(const ON_2fVector&);
00087 ON_2fPoint& operator-=(const ON_3fVector&);
00088
00089 ON_2fPoint operator*(int) const;
00090 ON_2fPoint operator/(int) const;
00091 ON_2fPoint operator*(float) const;
00092 ON_2fPoint operator/(float) const;
00093 ON_2dPoint operator*(double) const;
00094 ON_2dPoint operator/(double) const;
00095
00096 ON_2fPoint operator+(const ON_2fPoint&) const;
00097 ON_2fPoint operator+(const ON_2fVector&) const;
00098 ON_2fVector operator-(const ON_2fPoint&) const;
00099 ON_2fPoint operator-(const ON_2fVector&) const;
00100 ON_3fPoint operator+(const ON_3fPoint&) const;
00101 ON_3fPoint operator+(const ON_3fVector&) const;
00102 ON_3fVector operator-(const ON_3fPoint&) const;
00103 ON_3fPoint operator-(const ON_3fVector&) const;
00104
00105 ON_2dPoint operator+(const ON_2dPoint&) const;
00106 ON_2dPoint operator+(const ON_2dVector&) const;
00107 ON_2dVector operator-(const ON_2dPoint&) const;
00108 ON_2dPoint operator-(const ON_2dVector&) const;
00109 ON_3dPoint operator+(const ON_3dPoint&) const;
00110 ON_3dPoint operator+(const ON_3dVector&) const;
00111 ON_3dVector operator-(const ON_3dPoint&) const;
00112 ON_3dPoint operator-(const ON_3dVector&) const;
00113
00114 float operator*(const ON_2fPoint&) const;
00115 float operator*(const ON_2fVector&) const;
00116 float operator*(const ON_4fPoint&) const;
00117
00118 bool operator==(const ON_2fPoint&) const;
00119 bool operator!=(const ON_2fPoint&) const;
00120
00121
00122 bool operator<=(const ON_2fPoint&) const;
00123 bool operator>=(const ON_2fPoint&) const;
00124 bool operator<(const ON_2fPoint&) const;
00125 bool operator>(const ON_2fPoint&) const;
00126
00127
00128 float& operator[](int);
00129 float operator[](int) const;
00130 float& operator[](unsigned int);
00131 float operator[](unsigned int) const;
00132
00133
00134 void Set(float,float);
00135
00136 double DistanceTo( const ON_2fPoint& ) const;
00137
00138 int MaximumCoordinateIndex() const;
00139 double MaximumCoordinate() const;
00140
00141 void Zero();
00142
00143
00144
00145 void Transform(
00146 const ON_Xform&
00147 );
00148
00149 void Rotate(
00150 double,
00151 const ON_2fPoint&
00152 );
00153
00154 void Rotate(
00155 double,
00156 double,
00157 const ON_2fPoint&
00158 );
00159 };
00160
00161 ON_DECL
00162 ON_2fPoint operator*(int, const ON_2fPoint&);
00163
00164 ON_DECL
00165 ON_2fPoint operator*(float, const ON_2fPoint&);
00166
00167 ON_DECL
00168 ON_2dPoint operator*(double, const ON_2fPoint&);
00169
00171
00172
00173
00174 class ON_CLASS ON_3fPoint
00175 {
00176 public:
00177 float x, y, z;
00178
00179 static const ON_3fPoint Origin;
00180
00181
00182 ON_3fPoint();
00183 ON_3fPoint(float x,float y,float z);
00184 ON_3fPoint(const ON_2fPoint& );
00185 ON_3fPoint(const ON_4fPoint& );
00186 ON_3fPoint(const ON_2fVector& );
00187 ON_3fPoint(const ON_3fVector& );
00188 ON_3fPoint(const float*);
00189
00190 ON_3fPoint(const ON_2dPoint& );
00191 ON_3fPoint(const ON_3dPoint& );
00192 ON_3fPoint(const ON_4dPoint& );
00193 ON_3fPoint(const ON_2dVector& );
00194 ON_3fPoint(const ON_3dVector& );
00195 ON_3fPoint(const double*);
00196
00197
00198 operator float*();
00199 operator const float*() const;
00200
00201
00202 ON_3fPoint& operator=(const ON_2fPoint&);
00203 ON_3fPoint& operator=(const ON_4fPoint&);
00204 ON_3fPoint& operator=(const ON_2fVector&);
00205 ON_3fPoint& operator=(const ON_3fVector&);
00206 ON_3fPoint& operator=(const float*);
00207
00208 ON_3fPoint& operator=(const ON_2dPoint&);
00209 ON_3fPoint& operator=(const ON_3dPoint&);
00210 ON_3fPoint& operator=(const ON_4dPoint&);
00211 ON_3fPoint& operator=(const ON_2dVector&);
00212 ON_3fPoint& operator=(const ON_3dVector&);
00213 ON_3fPoint& operator=(const double*);
00214
00215 ON_3fPoint& operator*=(float);
00216 ON_3fPoint& operator/=(float);
00217 ON_3fPoint& operator+=(const ON_3fPoint&);
00218 ON_3fPoint& operator+=(const ON_3fVector&);
00219 ON_3fPoint& operator-=(const ON_3fPoint&);
00220 ON_3fPoint& operator-=(const ON_3fVector&);
00221
00222 ON_3fPoint operator*(int) const;
00223 ON_3fPoint operator/(int) const;
00224 ON_3fPoint operator*(float) const;
00225 ON_3fPoint operator/(float) const;
00226 ON_3dPoint operator*(double) const;
00227 ON_3dPoint operator/(double) const;
00228
00229 ON_3fPoint operator+(const ON_3fPoint&) const;
00230 ON_3fPoint operator+(const ON_3fVector&) const;
00231 ON_3fVector operator-(const ON_3fPoint&) const;
00232 ON_3fPoint operator-(const ON_3fVector&) const;
00233 ON_3fPoint operator+(const ON_2fPoint&) const;
00234 ON_3fPoint operator+(const ON_2fVector&) const;
00235 ON_3fVector operator-(const ON_2fPoint&) const;
00236 ON_3fPoint operator-(const ON_2fVector&) const;
00237
00238 ON_3dPoint operator+(const ON_3dPoint&) const;
00239 ON_3dPoint operator+(const ON_3dVector&) const;
00240 ON_3dVector operator-(const ON_3dPoint&) const;
00241 ON_3dPoint operator-(const ON_3dVector&) const;
00242 ON_3dPoint operator+(const ON_2dPoint&) const;
00243 ON_3dPoint operator+(const ON_2dVector&) const;
00244 ON_3dVector operator-(const ON_2dPoint&) const;
00245 ON_3dPoint operator-(const ON_2dVector&) const;
00246
00247 float operator*(const ON_3fPoint&) const;
00248 float operator*(const ON_3fVector&) const;
00249 float operator*(const ON_4fPoint&) const;
00250
00251 bool operator==(const ON_3fPoint&) const;
00252 bool operator!=(const ON_3fPoint&) const;
00253
00254
00255 bool operator<=(const ON_3fPoint&) const;
00256 bool operator>=(const ON_3fPoint&) const;
00257 bool operator<(const ON_3fPoint&) const;
00258 bool operator>(const ON_3fPoint&) const;
00259
00260
00261 float& operator[](int);
00262 float operator[](int) const;
00263 float& operator[](unsigned int);
00264 float operator[](unsigned int) const;
00265
00266
00267 void Set(float,float,float);
00268
00269 double DistanceTo( const ON_3fPoint& ) const;
00270
00271 int MaximumCoordinateIndex() const;
00272 double MaximumCoordinate() const;
00273 double Fuzz( double = ON_ZERO_TOLERANCE ) const;
00274
00275 void Zero();
00276
00277
00278
00279 void Transform(
00280 const ON_Xform&
00281 );
00282
00283 void Rotate(
00284 double,
00285 const ON_3fVector&,
00286 const ON_3fPoint&
00287 );
00288
00289 void Rotate(
00290 double,
00291 double,
00292 const ON_3fVector&,
00293 const ON_3fPoint&
00294 );
00295 };
00296
00297 ON_DECL
00298 ON_3fPoint operator*(int, const ON_3fPoint&);
00299
00300 ON_DECL
00301 ON_3fPoint operator*(float, const ON_3fPoint&);
00302
00303 ON_DECL
00304 ON_3dPoint operator*(double, const ON_3fPoint&);
00305
00307
00308
00309
00310 class ON_CLASS ON_4fPoint
00311 {
00312 public:
00313 float x, y, z, w;
00314
00315
00316 ON_4fPoint();
00317 ON_4fPoint(float x,float y,float z,float w);
00318
00319 ON_4fPoint(const ON_2fPoint& );
00320 ON_4fPoint(const ON_3fPoint& );
00321 ON_4fPoint(const ON_2fVector& );
00322 ON_4fPoint(const ON_3fVector& );
00323 ON_4fPoint(const float*);
00324
00325 ON_4fPoint(const ON_2dPoint& );
00326 ON_4fPoint(const ON_3dPoint& );
00327 ON_4fPoint(const ON_4dPoint& );
00328 ON_4fPoint(const ON_2dVector& );
00329 ON_4fPoint(const ON_3dVector& );
00330 ON_4fPoint(const double*);
00331
00332
00333 operator float*();
00334 operator const float*() const;
00335
00336
00337 ON_4fPoint& operator=(const ON_2fPoint&);
00338 ON_4fPoint& operator=(const ON_3fPoint&);
00339 ON_4fPoint& operator=(const ON_2fVector&);
00340 ON_4fPoint& operator=(const ON_3fVector&);
00341 ON_4fPoint& operator=(const float*);
00342
00343 ON_4fPoint& operator=(const ON_2dPoint&);
00344 ON_4fPoint& operator=(const ON_3dPoint&);
00345 ON_4fPoint& operator=(const ON_4dPoint&);
00346 ON_4fPoint& operator=(const ON_2dVector&);
00347 ON_4fPoint& operator=(const ON_3dVector&);
00348 ON_4fPoint& operator=(const double*);
00349
00350 ON_4fPoint& operator*=(float);
00351 ON_4fPoint& operator/=(float);
00352 ON_4fPoint& operator+=(const ON_4fPoint&);
00353 ON_4fPoint& operator-=(const ON_4fPoint&);
00354
00355 ON_4fPoint operator*(float) const;
00356 ON_4fPoint operator/(float) const;
00357 ON_4fPoint operator+(const ON_4fPoint&) const;
00358 ON_4fPoint operator-(const ON_4fPoint&) const;
00359
00360 float operator*(const ON_4fPoint&) const;
00361
00362
00363
00364 bool operator==(ON_4fPoint) const;
00365 bool operator!=(const ON_4fPoint&) const;
00366
00367
00368 float& operator[](int);
00369 float operator[](int) const;
00370 float& operator[](unsigned int);
00371 float operator[](unsigned int) const;
00372
00373
00374 void Set(float,float,float,float);
00375
00376 int MaximumCoordinateIndex() const;
00377 double MaximumCoordinate() const;
00378
00379 void Zero();
00380 bool Normalize();
00381
00382
00383
00384 void Transform(
00385 const ON_Xform&
00386 );
00387 };
00388
00389 ON_DECL
00390 ON_4fPoint operator*(float, const ON_4fPoint&);
00391
00392 ON_DECL
00393 ON_4dPoint operator*(double, const ON_4fPoint&);
00394
00396
00397
00398
00399 class ON_CLASS ON_2fVector
00400 {
00401 public:
00402 float x, y;
00403
00404 static const ON_2fVector ZeroVector;
00405 static const ON_2fVector XAxis;
00406 static const ON_2fVector YAxis;
00407
00408
00409
00410
00411
00412
00413
00414 static const ON_2fVector& UnitVector(
00415 int
00416 );
00417
00418
00419 ON_2fVector();
00420 ON_2fVector(float x,float y);
00421 ON_2fVector(const ON_2fPoint& );
00422 ON_2fVector(const ON_3fPoint& );
00423 ON_2fVector(const ON_4fPoint& );
00424 ON_2fVector(const ON_3fVector& );
00425 ON_2fVector(const float*);
00426
00427 ON_2fVector(const ON_2dPoint& );
00428 ON_2fVector(const ON_3dPoint& );
00429 ON_2fVector(const ON_4dPoint& );
00430 ON_2fVector(const ON_2dVector& );
00431 ON_2fVector(const ON_3dVector& );
00432 ON_2fVector(const double*);
00433
00434
00435 operator float*();
00436 operator const float*() const;
00437
00438
00439 ON_2fVector& operator=(const ON_2fPoint&);
00440 ON_2fVector& operator=(const ON_3fPoint&);
00441 ON_2fVector& operator=(const ON_3fVector&);
00442 ON_2fVector& operator=(const float*);
00443
00444 ON_2fVector& operator=(const ON_2dPoint&);
00445 ON_2fVector& operator=(const ON_3dPoint&);
00446 ON_2fVector& operator=(const ON_2dVector&);
00447 ON_2fVector& operator=(const ON_3dVector&);
00448 ON_2fVector& operator=(const double*);
00449
00450 ON_2fVector operator-() const;
00451
00452 ON_2fVector& operator*=(float);
00453 ON_2fVector& operator/=(float);
00454 ON_2fVector& operator+=(const ON_2fVector&);
00455 ON_2fVector& operator-=(const ON_2fVector&);
00456
00457 float operator*(const ON_2fVector&) const;
00458 float operator*(const ON_2fPoint&) const;
00459 double operator*(const ON_2dVector&) const;
00460
00461 ON_2fVector operator*(int) const;
00462 ON_2fVector operator/(int) const;
00463 ON_2fVector operator*(float) const;
00464 ON_2fVector operator/(float) const;
00465 ON_2dVector operator*(double) const;
00466 ON_2dVector operator/(double) const;
00467
00468 ON_2fVector operator+(const ON_2fVector&) const;
00469 ON_2fPoint operator+(const ON_2fPoint&) const;
00470 ON_2fVector operator-(const ON_2fVector&) const;
00471 ON_2fPoint operator-(const ON_2fPoint&) const;
00472 ON_3fVector operator+(const ON_3fVector&) const;
00473 ON_3fPoint operator+(const ON_3fPoint&) const;
00474 ON_3fVector operator-(const ON_3fVector&) const;
00475 ON_3fPoint operator-(const ON_3fPoint&) const;
00476
00477 ON_2dVector operator+(const ON_2dVector&) const;
00478 ON_2dPoint operator+(const ON_2dPoint&) const;
00479 ON_2dVector operator-(const ON_2dVector&) const;
00480 ON_2dPoint operator-(const ON_2dPoint&) const;
00481 ON_3dVector operator+(const ON_3dVector&) const;
00482 ON_3dPoint operator+(const ON_3dPoint&) const;
00483 ON_3dVector operator-(const ON_3dVector&) const;
00484 ON_3dPoint operator-(const ON_3dPoint&) const;
00485
00486 float operator*(const ON_4fPoint&) const;
00487
00488 bool operator==(const ON_2fVector&) const;
00489 bool operator!=(const ON_2fVector&) const;
00490
00491
00492 bool operator<=(const ON_2fVector&) const;
00493 bool operator>=(const ON_2fVector&) const;
00494 bool operator<(const ON_2fVector&) const;
00495 bool operator>(const ON_2fVector&) const;
00496
00497
00498 float& operator[](int);
00499 float operator[](int) const;
00500 float& operator[](unsigned int);
00501 float operator[](unsigned int) const;
00502
00503
00504 void Set(float,float);
00505
00506 int MaximumCoordinateIndex() const;
00507 double MaximumCoordinate() const;
00508
00509 double LengthSquared() const;
00510 double Length() const;
00511
00512 bool Decompose(
00513
00514
00515
00516
00517
00518
00519 const ON_2fVector&,
00520 const ON_2fVector&,
00521 double*,
00522 double*
00523 ) const;
00524
00525 int IsParallelTo(
00526
00527
00528
00529
00530 const ON_2fVector&,
00531 double = ON_DEFAULT_ANGLE_TOLERANCE
00532 ) const;
00533
00534 bool IsPerpendicularTo(
00535
00536
00537
00538 const ON_2fVector&,
00539 double = ON_DEFAULT_ANGLE_TOLERANCE
00540 ) const;
00541
00542 void Zero();
00543 void Reverse();
00544 bool Unitize();
00545 bool IsUnitVector() const;
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557 bool IsTiny(
00558 double = ON_ZERO_TOLERANCE
00559 ) const;
00560
00561
00562
00563 bool IsZero() const;
00564
00565
00566 bool PerpendicularTo(
00567
00568 const ON_2fVector&
00569 );
00570
00571
00572 bool PerpendicularTo(
00573 const ON_2fPoint&,
00574 const ON_2fPoint&
00575 );
00576 };
00577
00578 ON_DECL
00579 ON_2fVector operator*(int, const ON_2fVector&);
00580
00581 ON_DECL
00582 ON_2fVector operator*(float, const ON_2fVector&);
00583
00584 ON_DECL
00585 ON_2dVector operator*(double, const ON_2fVector&);
00586
00588
00589
00590
00591
00592 ON_DECL
00593 float
00594 ON_DotProduct(
00595 const ON_2fVector&,
00596 const ON_2fVector&
00597 );
00598
00599 ON_DECL
00600 ON_3fVector
00601 ON_CrossProduct(
00602 const ON_2fVector&,
00603 const ON_2fVector&
00604 );
00605
00606 ON_DECL
00607 bool
00608 ON_IsOrthogonalFrame(
00609 const ON_2fVector&,
00610 const ON_2fVector&
00611 );
00612
00613 ON_DECL
00614 bool
00615 ON_IsOrthonormalFrame(
00616 const ON_2fVector&,
00617 const ON_2fVector&
00618 );
00619
00620 ON_DECL
00621 bool
00622 ON_IsRightHandFrame(
00623 const ON_2fVector&,
00624 const ON_2fVector&
00625 );
00626
00628
00629
00630
00631 class ON_CLASS ON_3fVector
00632 {
00633 public:
00634 float x, y, z;
00635
00636 static const ON_3fVector ZeroVector;
00637 static const ON_3fVector XAxis;
00638 static const ON_3fVector YAxis;
00639 static const ON_3fVector ZAxis;
00640
00641
00642
00643
00644
00645
00646
00647
00648 static const ON_3fVector& UnitVector(
00649 int
00650 );
00651
00652
00653 ON_3fVector();
00654 ON_3fVector(float x,float y,float z);
00655
00656 ON_3fVector(const ON_2fPoint& );
00657 ON_3fVector(const ON_3fPoint& );
00658 ON_3fVector(const ON_4fPoint& );
00659 ON_3fVector(const ON_2fVector& );
00660 ON_3fVector(const float*);
00661
00662 ON_3fVector(const ON_2dPoint& );
00663 ON_3fVector(const ON_3dPoint& );
00664 ON_3fVector(const ON_4dPoint& );
00665 ON_3fVector(const ON_2dVector& );
00666 ON_3fVector(const ON_3dVector& );
00667 ON_3fVector(const double*);
00668
00669
00670 operator float*();
00671 operator const float*() const;
00672
00673
00674 ON_3fVector& operator=(const ON_2fPoint&);
00675 ON_3fVector& operator=(const ON_3fPoint&);
00676 ON_3fVector& operator=(const ON_4fPoint&);
00677 ON_3fVector& operator=(const ON_2fVector&);
00678 ON_3fVector& operator=(const float*);
00679
00680 ON_3fVector& operator=(const ON_2dPoint&);
00681 ON_3fVector& operator=(const ON_3dPoint&);
00682 ON_3fVector& operator=(const ON_4dPoint&);
00683 ON_3fVector& operator=(const ON_2dVector&);
00684 ON_3fVector& operator=(const ON_3dVector&);
00685 ON_3fVector& operator=(const double*);
00686
00687 ON_3fVector operator-() const;
00688
00689 ON_3fVector& operator*=(float);
00690 ON_3fVector& operator/=(float);
00691 ON_3fVector& operator+=(const ON_3fVector&);
00692 ON_3fVector& operator-=(const ON_3fVector&);
00693
00694 float operator*(const ON_3fVector&) const;
00695 float operator*(const ON_3fPoint&) const;
00696 double operator*(const ON_3dVector&) const;
00697
00698 ON_3fVector operator*(int) const;
00699 ON_3fVector operator/(int) const;
00700 ON_3fVector operator*(float) const;
00701 ON_3fVector operator/(float) const;
00702 ON_3dVector operator*(double) const;
00703 ON_3dVector operator/(double) const;
00704
00705 ON_3fVector operator+(const ON_3fVector&) const;
00706 ON_3fPoint operator+(const ON_3fPoint&) const;
00707 ON_3fVector operator-(const ON_3fVector&) const;
00708 ON_3fPoint operator-(const ON_3fPoint&) const;
00709 ON_3fVector operator+(const ON_2fVector&) const;
00710 ON_3fPoint operator+(const ON_2fPoint&) const;
00711 ON_3fVector operator-(const ON_2fVector&) const;
00712 ON_3fPoint operator-(const ON_2fPoint&) const;
00713
00714 ON_3dVector operator+(const ON_3dVector&) const;
00715 ON_3dPoint operator+(const ON_3dPoint&) const;
00716 ON_3dVector operator-(const ON_3dVector&) const;
00717 ON_3dPoint operator-(const ON_3dPoint&) const;
00718 ON_3dVector operator+(const ON_2dVector&) const;
00719 ON_3dPoint operator+(const ON_2dPoint&) const;
00720 ON_3dVector operator-(const ON_2dVector&) const;
00721 ON_3dPoint operator-(const ON_2dPoint&) const;
00722
00723 float operator*(const ON_4fPoint&) const;
00724
00725 bool operator==(const ON_3fVector&) const;
00726 bool operator!=(const ON_3fVector&) const;
00727
00728
00729 bool operator<=(const ON_3fVector&) const;
00730 bool operator>=(const ON_3fVector&) const;
00731 bool operator<(const ON_3fVector&) const;
00732 bool operator>(const ON_3fVector&) const;
00733
00734
00735 float& operator[](int);
00736 float operator[](int) const;
00737 float& operator[](unsigned int);
00738 float operator[](unsigned int) const;
00739
00740
00741 void Set(float,float,float);
00742
00743 int MaximumCoordinateIndex() const;
00744 double MaximumCoordinate() const;
00745
00746 double LengthSquared() const;
00747 double Length() const;
00748
00749 bool IsPerpendicularTo(
00750
00751
00752
00753 const ON_3fVector&,
00754 double = ON_DEFAULT_ANGLE_TOLERANCE
00755 ) const;
00756
00757 double Fuzz( double = ON_ZERO_TOLERANCE ) const;
00758
00759 void Zero();
00760 void Reverse();
00761 bool Unitize();
00762 bool IsUnitVector() const;
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
00773
00774 bool IsTiny(
00775 double = ON_ZERO_TOLERANCE
00776 ) const;
00777
00778
00779
00780 bool IsZero() const;
00781
00782
00783 bool PerpendicularTo(
00784
00785 const ON_3fVector&
00786 );
00787
00788
00789
00790 void Transform(
00791 const ON_Xform&
00792 );
00793
00794 void Rotate(
00795 double,
00796 const ON_3fVector&
00797 );
00798
00799 void Rotate(
00800 double,
00801 double,
00802 const ON_3fVector&
00803 );
00804 };
00805
00806 ON_DECL
00807 ON_3fVector operator*(int, const ON_3fVector&);
00808
00809 ON_DECL
00810 ON_3fVector operator*(float, const ON_3fVector&);
00811
00812 ON_DECL
00813 ON_3dVector operator*(double, const ON_3fVector&);
00814
00816
00817
00818
00819
00820 ON_DECL
00821 float
00822 ON_DotProduct(
00823 const ON_3fVector&,
00824 const ON_3fVector&
00825 );
00826
00827
00828 ON_DECL
00829 ON_3fVector
00830 ON_CrossProduct(
00831 const ON_3fVector&,
00832 const ON_3fVector&
00833 );
00834
00835 ON_DECL
00836 ON_3fVector
00837 ON_CrossProduct(
00838 const float*,
00839 const float*
00840 );
00841
00842 ON_DECL
00843 float
00844 ON_TripleProduct(
00845 const ON_3fVector&,
00846 const ON_3fVector&,
00847 const ON_3fVector&
00848 );
00849
00850 ON_DECL
00851 float
00852 ON_TripleProduct(
00853 const float*,
00854 const float*,
00855 const float*
00856 );
00857
00858 ON_DECL
00859 bool
00860 ON_IsOrthogonalFrame(
00861 const ON_3fVector&,
00862 const ON_3fVector&,
00863 const ON_3fVector&
00864 );
00865
00866 ON_DECL
00867 bool
00868 ON_IsOrthonormalFrame(
00869 const ON_3fVector&,
00870 const ON_3fVector&,
00871 const ON_3fVector&
00872 );
00873
00874 ON_DECL
00875 bool
00876 ON_IsRightHandFrame(
00877 const ON_3fVector&,
00878 const ON_3fVector&,
00879 const ON_3fVector&
00880 );
00881
00883
00884
00885
00886
00887
00888 extern ON_EXTERN_DECL const ON_3fPoint ON_forigin;
00889
00890
00891 extern ON_EXTERN_DECL const ON_3fVector ON_fxaxis;
00892
00893
00894 extern ON_EXTERN_DECL const ON_3fVector ON_fyaxis;
00895
00896
00897 extern ON_EXTERN_DECL const ON_3fVector ON_fzaxis;
00898
00899
00900 #endif