zoukankan      html  css  js  c++  java
  • 使用C#三维图形控件进行曲线曲面分析

    使用AnyCAD.Net三维图图形控件能够计算曲线的切线、法线、曲率、长度等,能够计算曲面的uv切线、法线、面积等。

    代码示例一:曲线分析

                Platform.LineStyle lineStyle = new Platform.LineStyle();
                lineStyle.SetLineWidth(0.5f);
                lineStyle.SetColor(ColorValue.BLUE);
                Platform.LineStyle lineStyle2 = new Platform.LineStyle();
                lineStyle2.SetLineWidth(0.5f);
                lineStyle2.SetColor(ColorValue.GREEN);
    
                Platform.TopoShape arc = renderView.ShapeMaker.MakeEllipseArc(Vector3.ZERO, 100, 50, 45, 270, Vector3.UNIT_Z);
                renderView.ShowGeometry(arc, 100);
     
                {
                    Platform.GeomeCurve curve = new Platform.GeomeCurve();
                    curve.Initialize(arc);
    
                    float paramStart = curve.FirstParameter();
                    float paramEnd = curve.LastParameter();
    
                    float step = (paramEnd - paramStart) * 0.1f;
    
                    for (float uu = paramStart; uu <= paramEnd; uu += step)
                    {
                        Vector3 dir = curve.DN(uu, 1);
                        Vector3 pos = curve.Value(uu);
    
                        // 切线
                        {
                            Platform.TopoShape line = renderView.ShapeMaker.MakeLine(pos, pos + dir);
                            Platform.SceneNode node = renderView.ShowGeometry(line, 101);
                            node.SetLineStyle(lineStyle);
                        }
                        // 法线
                        {
                            Vector3 dirN = dir.CrossProduct(Vector3.UNIT_Z);
                            Platform.TopoShape line = renderView.ShapeMaker.MakeLine(pos, pos + dirN);
                            Platform.SceneNode node = renderView.ShowGeometry(line, 101);
                            node.SetLineStyle(lineStyle2);
                        }
    
                    }
    
                }

    运行结果:

    代码示例二:曲面分析

                Platform.LineStyle lineStyle = new Platform.LineStyle();
                lineStyle.SetLineWidth(0.5f);
                lineStyle.SetColor(ColorValue.RED);
    
                TopoShape arc = renderView.ShapeMaker.MakeArc(Vector3.ZERO, 100, -45, 45, Vector3.UNIT_X);
                TopoShape face = renderView.ShapeMaker.Extrude(arc, 200, Vector3.UNIT_X);
    
                renderView.ShowGeometry(face, 101);
    
                GeomeSurface surface = new GeomeSurface();
                surface.Initialize(face);
                float ufirst = surface.FirstUParameter();
                float uLarst = surface.LastUParameter();
                float vfirst = surface.FirstVParameter();
                float vLast = surface.LastVParameter();
    
                float ustep = (uLarst - ufirst) * 0.1f;
                float vstep = (vLast - vfirst) * 0.1f;
                for(float ii=ufirst; ii<=uLarst; ii+= ustep)
                    for (float jj = vfirst; jj <= vLast; jj += vstep)
                    {
                        Vector3List data = surface.D1(ii, jj);
    
                        Vector3 pos = data.Get(0);
                        Vector3 dirU = data.Get(1);
                        Vector3 dirV = data.Get(2);
                        Vector3 dir = dirV.CrossProduct(dirU);
                        {
                            Platform.TopoShape line = renderView.ShapeMaker.MakeLine(pos, pos + dir);
                            Platform.SceneNode node = renderView.ShowGeometry(line, 101);
    
                            node.SetLineStyle(lineStyle);
                        }
                    }

    运行结果

  • 相关阅读:
    SelectorQuery wx.createSelectorQuery()
    JavaScript获取服务器端时间的方法
    linux ftp 文件修改时间 ModifiedDate 与本地相差 8小时
    申请域名SSL证书-域名验证配置指南
    Python之pygame,从入门到精通(一)
    Anaconda介绍、安装及使用教程
    Git安装及控制台美化
    Redis Desktop Manager的下载及安装
    redis 访问 database
    Redis消息队列
  • 原文地址:https://www.cnblogs.com/anycad/p/anycad-csharp-graphics-control-for-curve-surface-analysis.html
Copyright © 2011-2022 走看看