Pipe Isometric Drawing Development – Math Functions

简介: 管路轴测图程序开发之数学函数 管路轴测图程序中主要用到了两个数学函数,用向量来计算真是太方便啦! 将直角坐标系下的一个向量转换为由任意三个向量组成的坐标系下的值;计算一个向量与三个坐标轴的向量哪个更垂直;我将这两个函数做成静态成员函数,方便调用,头文件定义如下: 1:  //--...

管路轴测图程序开发之数学函数

管路轴测图程序中主要用到了两个数学函数,用向量来计算真是太方便啦!

    1. 将直角坐标系下的一个向量转换为由任意三个向量组成的坐标系下的值;
    2. 计算一个向量与三个坐标轴的向量哪个更垂直;

我将这两个函数做成静态成员函数,方便调用,头文件定义如下:

  
1 :   // ------------------------------------------------------------------------------
    2 :   //     Copyright (c) 2012 eryar All Rights Reserved.
    3 :   //
    4 :   //         File    : IsoMath.h
    5 :   //         Author  : eryar@163.com
    6 :   //         Date    : 2012-3-2 21:53
    7 :   //         Version : 1.0v
    8 :   //
    9 :   //     Description : 
   10 :   //
   11 :   // ==============================================================================
   12 :   
  
13 :  #ifndef _ISOMATH_H_
  
14 :   #define  _ISOMATH_H_
  
15 :   
  
16 :  #include  < CMATH >
  
17 :   
  
18 :  #include  " IsoVector.h "
  
19 :   
  
20 :   const     double  EPSILON   =  1e - 6 ;
  
21 :   
  
22 :   class  CIsoMath  
  
23 :  {
  
24 :   public :
  
25 :      CIsoMath();
  
26 :       virtual   ~ CIsoMath();
  
27 :   
  
28 :       //  Transform coordinate from orthogonal coordinates to arbitrary coordinates
   29 :       static    void  TransformCoordinate( const  CIsoVector &  a,  const  CIsoVector &  xAxis,  const  CIsoVector &  yAxis,  const  CIsoVector &  zAxis, CIsoVector &  b);
  
30 :   
  
31 :       //  Compute a vVec vector which is the most vertical to uVec vector;
   32 :       static    void  ComputeAxis( const  CIsoVector &  uVec,  const  CIsoVector &  xAxis,  const  CIsoVector &  yAxis,  const  CIsoVector &  zAxis, CIsoVector &  vVec);
  
33 :  };
  
34 :   
  
35 :   #endif   //  _ISOMATH_H_

经过试验,效果很满意,对向量,线性代数的作用当刮目相看。摘图如下:

Pipe Isometric Drawing Development

如图所示为两个法兰和一段直管的轴测图投影效果,其中,模型数据是我测试假设的。

TransformCoordinate函数的作用是将管路部件的模型坐标转换为由红色x, y, z标识的三个向量组成的坐标系中的坐标;

ComputeAxis函数的作用是用来计算在红色x, y, z表示的坐标系中,平面一个向量与哪个轴更垂直,即点乘的值最小。其目的是用来计算法兰的另一边的方向;

当改变视向时,投影后的图形也会相应改变,说明计算结果还是比较可靠的。如下图所示:

Change View Direction

到此为止,程序结构已经确定下来。其它代码量为处理各管路部件的模型数据与其符号数据的转换。

通过编程,使我对向量、矩阵的概念有了理性的认识。通过与角度运算对比,向量真是又快精度又高。

目录
相关文章
|
7月前
|
前端开发 图形学
Could you provide some examples of when Canvas or SVG would be the better choice for a web application?
Could you provide some examples of when Canvas or SVG would be the better choice for a web application
|
Serverless Shell 对象存储
Guidelines for Function Compute Development - Crawler
The Guidelines for Function Compute Development - Use Fun Local for Local Running and Debugging briefly describes how to use Fun Local for the local running and debugging of functions.
1507 0
|
新零售 测试技术 Python
Robot Framework - Variable file
RF导入变量文件 在Setting中导入 Setting中导入变量文件时,和导入外部资源文件类似。变量文件的路径可以包含参数,如果一个变量文件接受参数,那么它们也可以是变量。
1369 0
|
异构计算 索引 算法