Exemplo n.º 1
0
StelGeodesicGrid::StelGeodesicGrid(const int lev) : maxLevel(lev<0?0:lev), lastMaxSearchlevel(-1)
{
	if (maxLevel > 0)
	{
		triangles = new Triangle*[maxLevel+1];
		int nr_of_triangles = 20;
		for (int i=0;i<maxLevel;i++)
		{
			triangles[i] = new Triangle[nr_of_triangles];
			nr_of_triangles *= 4;
		}
		for (int i=0;i<20;i++)
		{
			const int *const corners = icosahedron_triangles[i].corners;
			initTriangle(0,i,
			             icosahedron_corners[corners[0]],
			             icosahedron_corners[corners[1]],
			             icosahedron_corners[corners[2]]);
		}
	}
	else
	{
		triangles = 0;
	}
	cacheSearchResult = new GeodesicSearchResult(*this);
}
Exemplo n.º 2
0
int main(void)
{
    GLFWwindow* window;
    
    /* Initialize the library */
    if (!glfwInit())
        return -1;
    
    //使用OpenGL 3.2
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    
    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);
    
    if(false==LoadImg("/Users/wistoneqqx/Documents/opengl/github/texture-maps-gl7/texture-maps/test01.jpg",0))
        printf("加载图片1失败!\n");
    
    if(false==LoadImg("/Users/wistoneqqx/Documents/opengl/github/texture-maps-gl7/texture-maps/test02.jpg",1))
        printf("加载图片2失败!\n");
    
    initShader();
    initTriangle();
    
    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        
        glClearColor(0.0f,0.0f,0.0f,0.0f);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        
        drawTriangle();
        
        /* Swap front and back buffers */
        glfwSwapBuffers(window);
        
        /* Poll for and process events */
        glfwPollEvents();
    }
    
    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}
Exemplo n.º 3
0
void init(void)
{
  mapState.border = createPanelBorder(X_BORD, Y_BORD, WIDTH_BORD);
  mapState.button_rect = initRect();
  mapState.button_triangle = initTriangle();
  mapState.button_line = initLine();
  mapState.button_circle = initCircle();
  
  mapState.points_storage = createLinkedList();
  mapState.edges_storage = createLinkedList();
}
Exemplo n.º 4
0
void StelGeodesicGrid::initTriangle(int lev,int index,
								const Vec3f &c0,
								const Vec3f &c1,
								const Vec3f &c2)
{
	Q_ASSERT((c0^c1)*c2 >= 0.0);
	Triangle &t(triangles[lev][index]);
	t.e0 = c1+c2;
	t.e0.normalize();
	t.e1 = c2+c0;
	t.e1.normalize();
	t.e2 = c0+c1;
	t.e2.normalize();
	lev++;
	if (lev < maxLevel)
	{
		index *= 4;
		initTriangle(lev,index+0,c0,t.e2,t.e1);
		initTriangle(lev,index+1,t.e2,c1,t.e0);
		initTriangle(lev,index+2,t.e1,t.e0,c2);
		initTriangle(lev,index+3,t.e0,t.e1,t.e2);
	}
}
Exemplo n.º 5
0
Convexe2D::Convexe2D(const QVector<Vector2D>& points)
{

    if(points.size() < 3)
    {
        _points = points;
        initMinMaxCentre();
        setLinked(true);
        return;
    }
    int i0, i1, i2;
    if(!initNonAlignee(points, i0,i1,i2))   //si tous les points sont alignés
    {
        _points.push_back(points[i0]);
        _points.push_back(points[i1]);
        _min = min(points[i0], points[i1]);
        _max = max(points[i0], points[i1]);
        _centre =(_min+_max)/2;
        setLinked(true);
        return;
    }

    initTriangle(points[i0],points[i1],points[i2]);

    for(int i=i2+1; i< points.size(); i++){
        ajoutPointConvex(points[i]);

#ifdef DEBUG_PROBLEME
        if(i == -1)    //pour le débug, retrouver un indice précis où il y a un problème
            std::cout << "ici" << std::endl;
        else
            for(int i3 = 0; i3 < getNbPoints();  i3++)
            {
                if(inHalfSpaceDroit(_points[i3], _points[(i3+1)%getNbPoints()], _points[(i3+2)%getNbPoints()]))
                    std::cout << "problème " << i3 << " -> " << getNbPoints() << " => " << i << std::endl;
            }
#endif
    }

    initMinMaxCentre();
    setLinked(true);
}
Exemplo n.º 6
0
Convexe2D::Convexe2D(const Vector2D& point0, const Vector2D& point1, const Vector2D& point2)
{    
    initTriangle(point0, point1, point2);
}