Pipe Isometric Drawing Development – Math Functions

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

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

    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_

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

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

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

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

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

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

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

时间: 2024-09-21 06:18:49

Pipe Isometric Drawing Development &ndash; Math Functions的相关文章

Pipe Isometric Drawing --- Development

  Pipe Isometric Drawing 管子轴测图程序开发   下定决心,要做一个自己的出管子轴测图的程序.在网上查了一下,现在管子轴测图用得最广泛的几乎工业标准的出图程序是Alias 的ISOGEN,现在由Intergraph收购.ISOGEN是Intergraph的SmartPlant Isometrics和SmartPlant Spoolgen程序的核心技术.具体可参考:http://www.alias.ltd.uk/ISOGEN_main.asp. 很多工厂三维设计软件若要出管

Pipe Isometric Drawing and Linear Programming

管路单线图与线性规划 Pipe Isometric Drawing and Linear Programming eryar@163.com 一.概述 Introduction 线性规划是运筹学的重要组成部分,也是最基本的部分.自1947年丹齐格(G.B.Dantzig)提出了求解线性规划的一般方法--单纯形法以来,实际上他提出单纯形法最早在第二次世界大战期间,有许多作者在线性规划领域做出了贡献,包括理论研究.算法及其应用.至今,线性规划在理论上趋向成熟,尤其是计算机处理问题的规模及运算速度提高

Pipe Isometric Drawing Symbol Keys

Pipe Isometric Drawing Symbol Keys 管路轴测图部件符号 eryar@163.com 一.概述 Introduction 每个部件在轴测图上都是用符号来表示的.根据国家标准GB/T6567中规定的绘制符号的基本原则摘抄几条如下: l 管路系统中常用的图形符号是按形象化.简化.清晰和便于计算机绘图.手工绘图及缩微复制等要求制订的: l 未作规定的管路系统中的图形符号可根据本标准的原则组合或派生: l 在应用时,图形符号的大小可适当地按比例放大或缩小: Key的中文字

Pipe Isometric Drawing Generated by IsoAlgo

The following Pipe Isometric Drawing is Generated by IsoAlgo:   Figure . Simple Pipe Isometric Drawing   Figure. Pipe Isometric Drawing with Skewed pipeline  

Pipe Isometric Drawing --- Project Transform

管路单线图开发之投影变换 Pipe Isometric Drawing --- Project Transform eryar@163.com   通过向量运算实现了从三维坐标到轴测投影的二维转换.当选择不同的投影方式时,产生不同的投影效果,分别如下所示: 一.西南投影图 SouthWest   二.东南投影图 SouthEast 三.东北投影 NorthEast 四.西北投影 NorthWest 五.结论      实现投影计算后,下一步实现各管路部件的符号表示.

Pipe Isometric Drawing

Pipe Isometric Drawing 管子轴测图 一.管子轴测图定义 管道的轴测图又叫系统图,就是从侧面或剖面来看一个系统或装置的图,一般用轴测图只是看管道走向,或设计标高之类,如果是民用建筑一般只有给排水又管道轴测图.如果是工业管道安装,就比较复杂, 要看阀门.法兰.管件的安装具体位置以及标高. 二.程序实现   三.一个不错的管子设计方面的网站: http://www.wermac.org/

Add Page Number for Foran Pipe Spool Drawing

Add Page Number for Foran Pipe Spool Drawing eryar@163.com Abstract. Add page number for Foran pipe spool drawing generated by ISOM. The ISOM of Foran is used for spool drawing generation, but there is no number on the drawing, so use AutoLISP to wri

How to split piping isometric drawing automatically?

eryar@163.com   key words: IsoAlgo, Isogen, ISO-SPLIT-POINT, split automatically   当管道模型比较复杂时,生成的轴测图就会有重叠的现象,如何来消除重叠呢,一种有效的方式就是分图. Figure 1 Complex piping isometric drawing (Generated by IsoAlgo) 如上图所示,有几处尺寸标注或件号标注明显重叠,导致图面杂乱.在一些软件中有手动添加分图点的方式,强制分图.对

TensorFlow教程之API DOC 6.3.9. MATH OPS

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. Math Note: Functions taking Tensor arguments can also take anything accepted by tf.convert_to_tensor. Contents Math Arithmetic Operators tf.add(x, y, name=None) tf.sub(x, y, name=None) tf.mul(x, y, name=None