C# c语言中的斜面或凹陷效应算法#

C# c语言中的斜面或凹陷效应算法#,c#,algorithm,image-processing,graphics,gdi,C#,Algorithm,Image Processing,Graphics,Gdi,我正在寻找为一组随机闭合贝兹形状生成斜面/浮雕效果的方法。我发现下面的帖子似乎符合我的要求 我怎么把这个移植到C#?有什么算法可以使用吗?或者,是否有任何.NET映像库可供使用,或者有一些代码片段可供我开始使用 我需要在服务器上运行此代码,以生成周围透明的动态形状 从闭合多边形/多段线/路径创建“网格” 底座通过斜面/凹陷宽度扩大基本形状 上面或下面是你的形状 放大是通过围绕基本对称形状的中心进行缩放来完成的 或通过垂直移动+直线/曲线放大/相交切割进行连接 第二种选择对代码来说很复杂,但形

我正在寻找为一组随机闭合贝兹形状生成斜面/浮雕效果的方法。我发现下面的帖子似乎符合我的要求

我怎么把这个移植到C#?有什么算法可以使用吗?或者,是否有任何.NET映像库可供使用,或者有一些代码片段可供我开始使用

我需要在服务器上运行此代码,以生成周围透明的动态形状

  • 从闭合多边形/多段线/路径创建“网格”
    • 底座通过斜面/凹陷宽度扩大基本形状
    • 上面或下面是你的形状
    • 放大是通过围绕基本对称形状的中心进行缩放来完成的
    • 或通过垂直移动+直线/曲线放大/相交切割进行连接
    • 第二种选择对代码来说很复杂,但形状总是正确的
  • 创建法线
    • 垂直于光源红色(通常灯位于左上角)
    • 以及“网格”绿色上的曲面法线(对于每个边、区域或像素)
    • 对于方向光的整个区域,光法线可以是恒定的(远光源,如 (阳光)
    • 或为点光源的每个点计算(关闭光源)
    • 所有法线必须是单位3D向量
  • 使用灯光渲染“网格”(简单的普通照明就足够了)

    • 点积是这样的标量向量乘法

      (A.B) 
      = dot_product(A(x1,y1,z1),B(x2,y2,z2))
      = (x1*x2)+(y1*y2)+(z1*z2)
      
    • 当A、B为单位向量时,结果为

    • 0表示A、B垂直
    • +/-1表示它们是平行的
    • -1表示方向相反
  • 请参见图以获得更清晰的信息


    PS.“网格”仍然可以是2D只有法线必须是3D

    您引用的文章中的示例是用openCV编写的,已经有一个名为Emgucv@elasticrash.. 非常感谢。我做了进一步的搜索,这个链接似乎很有用
    (A.B) 
    = dot_product(A(x1,y1,z1),B(x2,y2,z2))
    = (x1*x2)+(y1*y2)+(z1*z2)