小编Sal*_*emD的帖子

宏编译与GCC但不与VS11编译

我编写了以下代码来帮助将我的模板函数限制为某些类型,并在使用其他类型时使用有意义的错误消息.我从stackoverflow中的一个不同的问题得到了这个想法,我仍然无法发表评论,因为我是新来的.

宏在linux GCC下完美编译,但在Visual Studio 2012中没有.

#include <string>
#include <iostream>
#include <vector>
#include <cassert>
#include <type_traits>

#define ISALLOWED(DerivedT) (std::is_same<T, DerivedT>::value)||(std::is_base_of<T,DerivedT>::value)
#define FE_1(WHAT, X) WHAT(X)
#define FE_2(WHAT, X, ...) WHAT(X) || FE_1(WHAT, __VA_ARGS__)
#define FE_3(WHAT, X, ...) WHAT(X) || FE_2(WHAT, __VA_ARGS__)
#define FE_4(WHAT, X, ...) WHAT(X) || FE_3(WHAT, __VA_ARGS__)
#define FE_5(WHAT, X, ...) WHAT(X) || FE_4(WHAT, __VA_ARGS__)
#define FE_6(WHAT, X, ...) WHAT(X) || FE_5(WHAT, __VA_ARGS__)
//... repeat as needed

#define GET_MACRO(_1,_2,_3,_4,_5,_6,NAME,...) NAME
#define FOR_EACH(action,...) \
  GET_MACRO(__VA_ARGS__,FE_6,FE_5,FE_4,FE_3,FE_2,FE_1)(action,__VA_ARGS__)

// this is where you need …
Run Code Online (Sandbox Code Playgroud)

c++ macros gcc c++11 visual-studio-2012

4
推荐指数
1
解决办法
278
查看次数

如何计算插值三角形曲面上的主曲率?

给定3D三角形网格中的3个顶点及其法线,我将它们插入到三角形表面上.我想计算该表面中每个点的主曲率k1,k2.

我的代码简要如下:

Vertex v1,v2,v3,v12,p,vp; // Vertex is an structure of x,y,z and some operators
v1 = ...;   v2 = ...;   v3 = ...;
Vertex n1,n2,n3,n12,n;//normals
n1 = ...;   n2 = ...;   n3 = ...;
int interLevels = ceil(sqrt(tArea(v1,v2,v3)));
for (float a=0; a<=1;a+=1.0f/interLevels){
    v12 = v1*a+v2*(1-a);
    n12 = n1*a+n2*(1-a);
    for (float b=0; b<=1;b+=1.0f/interLevels){
        p = v12*b+v3*(1-b);
        n = n12*b+n3*(1-b);
        normalize(n);

        Vertex k1,k2;       

    }
}
Run Code Online (Sandbox Code Playgroud)

我们如何计算k1和k2?是否足以依赖给定的输入,还是应该考虑附近的顶点?

c++ opengl math graphics image-processing

1
推荐指数
1
解决办法
1515
查看次数