【图形学】课程大作业

绘制球体(顶点数组和索引数组)

GLint statcky = 60;	// 横向向切成多少片
GLint stlicex = 60; // 纵向切多少片
const float PI = 3.1415926;

std::vector<float> drawglobeVBO() {
   
	std::vector<float> c;
	GLfloat R = 0.5f;	// 半径
	GLfloat angleHy = (GLfloat)(2 * PI) / statcky;	// 横向每份的角度		算出弧度值
	GLfloat angleZx = (GLfloat)(2 * PI) / stlicex;	// 纵向每份的角度		算出弧度值
	GLfloat NumAngleHy = 0;	// 当前横向角度	
	GLfloat NumAngleZx = 0;	// 当前纵向角度

	GLfloat x = 0;
	GLfloat y = 0;
	GLfloat z = 0;
	for (float j = 0; j < statcky; j++)
	{
   
		for (float i = 0; i < stlicex; i++)
		{
   
			NumAngleHy = angleHy * i;
			NumAngleZx = angleZx * j; // 起点都是轴指向的方向。根据右手定则决定转向,只要转向相同,那么两个就合适
			GLfloat x = R * cos(NumAngleHy) * cos(NumAngleZx);	// 记得转化精度  yaw&&pitch
			GLfloat y = R * sin(NumAngleHy);
			GLfloat z = R * cos(NumAngleHy) * sin(NumAngleZx);
			c.push_back(x);
			c.push_back(y);
			c.push_back(z);
		}
	}
	return c;
}

std::vector<int> drawglobeEBO() {
   
	std::vector<int> ebo;
	std::vector<float> vbo = drawglobeVBO();
	int only = vbo.size();
	int num = (int)((only / (3 * statcky)) * 2);
	for (int x = 0; x < stlicex / 2;)
	{
   
		for (int y = 0; y < statcky
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值