计算机图形学-切割圆球

本文深入探讨计算机图形学中的三维圆球切割技术,主要围绕OpenGL进行讲解,涉及顶点着色器、片段着色器的应用,以及如何通过数学公式实现对圆球的精确切割操作。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <gl/glut.h>
#include <math.h>
#include "gmath.h"
#include "gmatrix3d.h"
#include "gvector3d.h"
#include "gcamera.h"
#include "gmaterial.h"
#include "glight.h"
#include "gtexture2d.h"

GMatrix3d gRotmatrix;

GTexture2D gEarthTex;

GMatrix3d gRotMatrix;
double gRotx = 0.0;
double gRotY = 0.0;

bool gIsButtonDown = false;
int gMouseX = 0;
int gMouseY = 0;

GCamera gCamera;

GLight gLight0;

void drawPlan()
{
   
	glColor3f(0.6f,0.6f,0.6f);

	int nx;
	nx = 10;
	double dx = 2.0 / nx;
	double x, y0,y1;
	double da = 2 * PI / nx;
	double alpha = 0;


	glBegin(GL_QUADS);
	x = -1;
	for (int i = 0; i < nx; i++) 
	{
   
		GVector3d v0, v1;
		y0 = sin(alpha) * 0.2;
		y1 = sin(alpha + da) * 0.2;
		v0.set(-0.2*cos(alpha), 1.0 / PI, 0);
		v0.normalize();
		v1.set(-0.2*cos(alpha+da), 1.0 / PI, 0);
		v1.normalize();
		glVertex3d(x, y0, -1);

		glVertex3d(x, y0, 1);

		glVertex3d(x+dx, y1, 1);

		glVertex3d(x+dx, y1, -1);

		x += dx;
		alpha += da;
	}

	glEnd();

	//glBegin(GL_LINES);
	//for(float u=-1.0f;u<1.01f;u+=0.2f)
	//{
   
	//	glVertex3d(-1,0,u);
	//	glVertex3d(1,0,u);

	//	glVertex3d(u,0,-1);
	//	glVertex3d(u,0,1);
	//}
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值