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);
                        }
                    }

    运行结果

  • 相关阅读:
    为什么linux下多线程程序如此消耗虚拟内存【转】
    具体解说Android的图片下载框架UniversialImageLoader之磁盘缓存的扩展(二)
    【leetcode】Longest Common Prefix
    oracle插入特殊字符&#39;&amp;&#39;问题
    tomcat下配置https环境
    .NET--接口设计
    Hibernate知识点总结
    VB.NET中DataGridView控件
    eclipse内存溢出报错:java.lang.OutOfMemoryError:Java heap space
    理论与实际相结合——三层架构解析
  • 原文地址:https://www.cnblogs.com/anycad/p/anycad-csharp-graphics-control-for-curve-surface-analysis.html
Copyright © 2011-2022 走看看