app触控的代码

// qoe1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<math.h>
#include<iostream>
#include <iomanip>
#include<fstream>
#include <GL/glut.h> 
using namespace std;
double total[140][80];
void myDisplay(void)
{

	glClear(GL_COLOR_BUFFER_BIT);     glPointSize(1.0f);     glBegin(GL_POINTS);
	int i, j, k, l;
	float m, z,y;
	for (i = 139; i >= 0; i--)
		for (j = 0; j <= 78; j++)
			for (k = 0; k <= 3; k++)
				for (l = 0; l <= 3; l++)
				{
					m = total[i][j]/3.2;
					glColor3f(m,m, m);
					z = float((i*4+k - 280)) / 280;
					y = float(j * 4 + l - 156) / 156;
					glVertex2f(y, z);
				}
		
	


	glEnd();
	glFlush();
	       
	
	glVertex2f(0.0f, 0.0f);         glVertex2f(-0.5f, 0.5f);     glEnd();     glFlush();
}
int main()
{
	    ofstream f("qoe.csv");
		int i, j, k, l, m, z;
		double a1, a2, times, a3;
		double a[5][140][80];
		double al[5][140][80];
		double dl[5][140][80];
		double d[5][140][80];
		double dr[5][140][80];
		double ar[5][140][80];
		double az[5][140][80];
		double dz[5][140][80];
		double de[140][80];
		double ae[140][80];
		double b[5];
	
		double n;
		b[0] = 4;
		b[1] = 4.3;
		b[2] = 4.5;
		b[3] = 4.7;
		b[4] = 5.5;
		for (m = 0; m <= 4; m++)
		{
			n = b[m];
			for (i = 0; i <= 139; i++)
				for (j = 0; j <= 78; j++)
				{
					a1 = double(i) / 160 * n*3.3333;
					a2 = double(j) / 160 * n*3.3333;
					a3 = a1*a1 + a2*a2;
					if (a3 < 49)
					{
						times = (9.0 + a3 - 16) / (6 * sqrt(a3));
						a[m][i][j] = 1.0 - times;
					}
					else
					{
						if (i == 0)
							for (k = j; k > 0; k--)
							{
								a1 = double(k) / 160 * n*3.3333;
								a3 = a1*a1;
								if (a3 <= 49)
								{
									a[m][i][j] = 2 + (double(j - k)) / 160 * n*3.3333/5;
									break;
								}
							}
						else
						{
							a1 = double(i - 1) / 160 * n*3.3333;
							a3 = a1*a1 + a2*a2;
							if ((a3 <= 49))
							{
								a[m][i][j] = a[m][i - 1][j] + 2 + double(1) / 160 * n*3.3333/5;

							}
							else
								a[m][i][j] = a[m][i - 1][j] + double(1) / 160 * n*3.3333/5;

						}
					}

				}
			a[m][0][0] = 2;
		}
		for (m = 0; m <= 4; m++)
		{
			n = b[m];
			for (i = 0; i <= 139; i++)
				for (j = 0; j <= 78; j++)
				{
					a1 = double(i) / 160 * n*3.3333;
					a2 = double(j) / 160 * n*3.3333;
					a3 = a1*a1 + a2*a2;
					if (a3 < 31.36)
					{
						times = (5.76 + a3 - 10.24) / (4.8 * sqrt(a3));
						d[m][i][j] = 1.0 - times;
					}
					else
					{
						if (i == 0)
							for (k = j; k > 0; k--)
							{
								a1 = double(k) / 160 * n*3.3333;
								a3 = a1*a1;
								if (a3 <= 31.36)
								{
									d[m][i][j] = 2 + (double(j - k)) / 160 * n*3.3333/5;
									break;
								}
							}
						else
						{
							a1 = double(i - 1) / 160 * n*3.3333;
							a3 = a1*a1 + a2*a2;
							if ((a3 <= 31.36))
							{
								d[m][i][j] = d[m][i - 1][j] + 2 + double(1) / 160 * n*3.3333/5;

							}
							else
								d[m][i][j] = d[m][i - 1][j] + double(1) / 160 * n*3.3333/5;

						}
					}

				}
			d[m][0][0] = 2;
		}
		for (m = 0; m <= 4; m++)
		{
			n = b[m];
			for (i = 0; i <= 139; i++)
				for (j = 0; j <= 78; j++)
				{
					a1 = double(i) / 160 * n*3.3333;
					a2 = double(j) / 160 * n*3.3333;
					a3 = a1*a1 + a2*a2;
					if (a3 < 49)
					{
						times = (9.0 + a3 - 16) / (6 * sqrt(a3));
						al[m][i][78 - j] = 1.0 - times;
					}
					else
					{
						if (i == 0)
							for (k = j; k > 0; k--)
							{
								a1 = double(k) / 160 * n*3.3333;
								a3 = a1*a1;
								if (a3 <= 49)
								{
									al[m][i][78 - j] = 2 + (double(j - k)) / 160 * n*3.3333/5;
									break;
								}
							}
						else
						{
							a1 = double(i - 1) / 160 * n*3.3333;
							a3 = a1*a1 + a2*a2;
							if ((a3 <= 49))
							{
								al[m][i][78 - j] = al[m][i - 1][78 - j] + 2 + double(1) / 160 * n*3.3333/5;

							}
							else
								al[m][i][78 - j] = al[m][i - 1][78 - j] + double(1) / 160 * n*3.3333/5;

						}
					}

				}
		}
		for (m = 0; m <= 4; m++)
		{
			n = b[m];
			for (i = 0; i <= 139; i++)
				for (j = 0; j <= 78; j++)
				{
					a1 = double(i) / 160 * n*3.3333;
					a2 = double(j) / 160 * n*3.3333;
					a3 = a1*a1 + a2*a2;
					if (a3 < 31.36)
					{
						times = (5.76 + a3 - 10.24) / (4.8 * sqrt(a3));
						dl[m][i][78 - j] = 1.0 - times;
					}
					else
					{
						if (i == 0)
							for (k = j; k > 0; k--)
							{
								a1 = double(k) / 160 * n*3.3333;
								a3 = a1*a1;
								if (a3 <= 31.36)
								{
									dl[m][i][78 - j] = 2 + (double(j - k)) / 160 * n*3.3333/5;
									break;
								}
							}
						else
						{
							a1 = double(i - 1) / 160 * n*3.3333;
							a3 = a1*a1 + a2*a2;
							if ((a3 <= 31.36))
							{
								dl[m][i][78 - j] = dl[m][i - 1][78 - j] + 2 + double(1) / 160 * n*3.3333/5;

							}
							else
								dl[m][i][78 - j] = dl[m][i - 1][78 - j] + double(1) / 160 * n*3.3333/5;

						}
					}

				}
		}
		al[0][0][78] = a[0][0][0];
		al[1][0][78] = a[1][0][0];
		al[2][0][78] = a[2][0][0];
		al[3][0][78] = a[3][0][0];
		al[4][0][78] = a[4][0][0];
		dl[0][0][78] = d[0][0][0];
		dl[1][0][78] = d[1][0][0];
		dl[2][0][78] = d[2][0][0];
		dl[3][0][78] = d[3][0][0];
		dl[4][0][78] = d[4][0][0];
		for (m = 0; m <= 4; m++)
			for (i = 0; i <= 139; i++)
				for (j = 0; j <= 78; j++)
				{
					if (a[m][i][j] > al[m][i][j])
						ar[m][i][j] = al[m][i][j];
					else
						ar[m][i][j] = a[m][i][j];
					if (d[m][i][j] > dl[m][i][j])
						dr[m][i][j] = dl[m][i][j];
					else
						dr[m][i][j] = d[m][i][j];
				}
		for (m = 0; m <= 4; m++)
			for (i = 0; i <= 139; i++)
				for (j = 0; j <= 78;j++)
				{ 
					az[m][i][j] = a[m][i][j] * 0.4138 + al[m][i][j] * 0.3793 + ar[m][i][j] * 0.1724;
					dz[m][i][j] = d[m][i][j] * 0.4138 + dl[m][i][j] * 0.3793 + dr[m][i][j] * 0.1724;
				}
		for (i = 0; i <= 139; i++)
			for (j = 0; j <= 78; j++)
			{
				ae[i][j] = az[0][i][j] * 0.3103 + az[1][i][j] * 0.0345 + az[2][i][j] * 0.1034 + az[3][i][j] * 0.3103 + az[4][i][j] * 0.1724;
				de[i][j] = dz[0][i][j] * 0.3103 + dz[1][i][j] * 0.0345 + dz[2][i][j] * 0.1034 + dz[3][i][j] * 0.3103 + dz[4][i][j] * 0.1724;					
			}
		for (i = 0; i <= 139; i++)
			for (j = 0; j <= 78; j++)
			{
				total[i][j] = 0.5*ae[i][j] + 0.5*de[i][j];
			}

		f.setf(ios::showpoint);
	
	/*	for (i = 139; i >= 0; i--)
		{
			for (j = 0; j <= 77; j++)
			{

				f.precision(6);
			
				f << total[i][j];
				
				f << " ";
				if (total[i][j] >= 1) f << " ";
			}
			f << endl;
		

		}
	*/
		

		glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

		glutInitWindowPosition(140, 79);

		glutInitWindowSize(312, 560);

		glutCreateWindow("140*79的屏幕");

		glutDisplayFunc(&myDisplay);

		glutMainLoop();

		return 0;
		return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值