当前位置: 首页 > news >正文

circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。

 以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中,竟然只调用了circleMidpoint(scrPt  &c, GLint r) ,没有实现,我认为是系统方法,怎么找都找不到。openGL 官方文档也没找到,这不会是自定义的吧。我在同类文章中发现 有人写了  circleMidpoint(scrPt  &c, GLint r)   和里面嵌套的void putpixel(GLint x0, GLint y0, GLint x, GLint y),竟然跑起来了。

为啥没有人提到这个事情,是本道长太菜了?还是这事太简单了,不值一提?

#include "stdafx.h"
#include <GL/glut.h>
#include <stdlib.h>
#include <math.h> using namespace std;const GLdouble twoPi = 6.283185;class scrPt {
public:GLint x, y;
};GLsizei winWidth = 400, winHeight = 300; // Initial display window size.void init(void)
{glClearColor(1.0, 1.0, 1.0, 1.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}
//书上的代码里没有,自己后补的。2-1 
void putpixel(GLint x0, GLint y0, GLint x, GLint y)
{glBegin(GL_POINTS);glVertex2f(x0 + x, y0 + y);glVertex2f(x0 + x, y0 - y);glVertex2f(x0 - x, y0 + y);glVertex2f(x0 - x, y0 - y);glVertex2f(x0 + y, y0 + x);glVertex2f(x0 + y, y0 - x);glVertex2f(x0 - y, y0 + x);glVertex2f(x0 - y, y0 - x);glEnd();}// Midpoint routines for displaying a circle.//书上的代码里没有,自己后补的。2-2
void circleMidpoint(scrPt  &c, GLint r) //中点画圆函数
{int x, y, p;x = 0; y = r; p = 1 - r;while (x <= y) {putpixel(c.x, c.y, x, y);if (p < 0) {p += 2 * x + 1;}else {p += 2 * (x - y) + 1;y--;}x++;}
}
void pieChart(void)
{scrPt circCtr, piePt;GLint radius = winWidth / 4;         // Circle radius.GLdouble sliceAngle, previousSliceAngle = 0.0;GLint k, nSlices = 12;               // Number of slices.GLfloat dataValues[12] = { 10.0, 7.0, 13.0, 5.0, 13.0, 14.0, 3.0, 16.0, 5.0, 3.0, 17.0, 8.0 };GLfloat dataSum = 0.0;circCtr.x = winWidth / 2;            // Circle center position.circCtr.y = winHeight / 2;circleMidpoint(circCtr, radius);    // Call a midpoint circle-plot routine.for (k = 0; k < nSlices; k++)dataSum += dataValues[k];for (k = 0; k < nSlices; k++) {sliceAngle = twoPi * dataValues[k] / dataSum + previousSliceAngle;piePt.x = circCtr.x + radius * cos(sliceAngle);piePt.y = circCtr.y + radius * sin(sliceAngle);glBegin(GL_LINES);glVertex2i(circCtr.x, circCtr.y);glVertex2i(piePt.x, piePt.y);glEnd();previousSliceAngle = sliceAngle;}
}void displayFcn(void)
{glClear(GL_COLOR_BUFFER_BIT);         // Clear display window.glColor3f(0.0, 0.0, 1.0);             // Set circle color to blue.pieChart();glFlush();
}void winReshpeFcn(GLint newWidth, GLint newHeight)
{glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, GLdouble(newWidth), 0.0, GLdouble(newHeight));glClear(GL_COLOR_BUFFER_BIT);/* Reset display-window size parameters. */winWidth = newWidth;winHeight = newHeight;
}void main(int argc, char** argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(100, 100);glutInitWindowSize(winWidth,winHeight);glutCreateWindow("Pie Chart");init();glutDisplayFunc(displayFcn);glutReshapeFunc(winReshpeFcn);glutMainLoop();
}

相关文章:

circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。

以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中&#xff0c;竟然只调用了circleMidpoint(scrPt &c, GLint r) &#xff0c;没有实现&#xff0c;我认为是系统方法&#xff0c;怎么找都找不到。openGL 官方文档也没找到&#xff0c;这不会是自定义…...

RKNN模型评估-性能评估和内存评估

基于Python的模型评估 perf_debug&#xff1a;进行性能评估时是否开启debug 模式。在 debug 模式下&#xff0c;可以获取到每一层的运行时间&#xff0c;否则只能获取模型运行的总时间。默认值为 False。 eval_mem: 是否进入内存评估模式。进入内存评估模式后&#xff0c;可以…...

window mysql-8.0.34 zip解压包安装

window系统上安装mysql8 解压版 下载压缩包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34-winx64.zip安装 用解压软件解压刚下载的mysql-8.0.34-winx64.zip 的文件至d:\devs路径下。 创建配置文件my.ini到路径d:\devs\mysql-8.0.34-winx64下 [mysqld] # 设置…...

Mysql判断某个数据库中是否包含某个表,与pymysql工具函数

查看某个数据库中的全部表&#xff1a; SELECT table_name FROM information_schema.tables WHERE table_schema 数据库名因此查看某个库中的某个表可以使用&#xff1a; SELECT table_name FROM information_schema.tables WHERE table_schema 数据库名 AND table_name 表…...

快速掌握正则表达式

文章目录 限定符 Qualifier第一个常用限定符 &#xff1f;第二个常用限定符 *第三个常用限定符 或运算符字符类元字符 Meta-characters\d 数字字符\w 单词字符空白符 \s.任意字符^ $ 行首行尾 贪婪与懒惰匹配 Greedy vs Lazy Match实例 1 &#xff1a;RGB颜色匹配实例 2 &…...

git: ‘lfs‘ is not a git command unclear

首先可以尝试 git lfs install 是否可以&#xff0c;不可以后就看这个连接&#xff1a;https://stackoverflow.com/questions/48734119/git-lfs-is-not-a-git-command-unclear。 我的是ubuntu&#xff0c;所以&#xff1a; 保证这个前提&#xff1a; git-lfs requires git ve…...

代码随想录--哈希--两个数组的交集

题意&#xff1a;给定两个数组&#xff0c;编写一个函数来计算它们的交集。 说明&#xff1a; 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 import java.util.ArrayList; import java.util.HashMap; import java.util.List;public class SSS {public …...

基于腾讯文档进行应届生个人求职记录

1. 新建一个腾讯文档 电脑登录QQ&#xff0c;点击“腾讯文档”功能键。 2. 可以选择下载客户端&#xff0c;也可以直接进入网页版。&#xff08;本人使用网页版&#xff09; 3. 点击新建&#xff0c;选择在线表格。 4. 编辑表名&#xff0c;表内容。 5. 设置文档权限&#xf…...

计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)

图像分类 教程博客_传送门链接:链接 在本教程中&#xff0c;您将学习如何使用迁移学习训练卷积神经网络以进行图像分类。您可以在 cs231n 上阅读有关迁移学习的更多信息。 本文主要目的是教会你如何自己搭建分类模型&#xff0c;耐心看完&#xff0c;相信会有很大收获。废话不…...

(18)线程的实例认识:线程的控制,暂停,继续,停止,线程相互控制,协作

话不多&#xff0c;但比较中肯&#xff0c;本文参照c# 线程暂停继续的实现方式_哔哩哔哩_bilibili 一、老方式 1、这是一个老的实现方式&#xff0c;基本不推荐&#xff0c;背后控制的原理需要了解。 界面&#xff1a;三个button一个textbox …...

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 功能介绍代码案例输出结果封装扩展方法控制台调用 其他方法地址 功能介绍 1. 输入的数字是整数&#xff0c;则直接返回整数部分的字符串表示。 2. 如果输入的数字是小数&#xff0c;则执行…...

大数据精准营销大数据平台应用场景有哪些,平台优势有哪些?

精准营销大数据平台应用场景有很多种&#xff0c;比如在银行领域&#xff0c;我通过相应的客户数据&#xff0c;也可以给客户推广一些银行业务。还可以运用于证券行业&#xff0c;除此之外还可以运用于保险或者信托行业&#xff0c;借助精准营销大数据平台可以进行主动营销。那…...

Pyspark案例综合(数据计算)

数据计算 map方法 map算子 map算子&#xff08;成员方法&#xff09;接受一个处理函数&#xff0c;可用lambda快速编写&#xff0c;对RDD内的元素一一处理&#xff0c;返回RDD对象 链式调用 对于返回值是新的RDD的算子&#xff0c;可以通过链式调用的方式多次调用算子 &q…...

电路电子技术1--关联参考方向及功率的计算

1.判断 电流由元件的低点位端流向高电位端的参考方向称为关联参考方向。() 考点&#xff1a;电流、电压的参考方向 解释&#xff1a;在一些复杂的电路中&#xff0c;往往不能预先确定某段电路上的电流、电压的实际方向&#xff0c;所以引进了 “关联参考方向”。为了能够解决问…...

【C++】AVL树的插入操作实现以及验证是否正确(带平衡因子)

文章目录 前言一、AVL树结点的定义二、AVL树的插入&#xff08;Insert&#xff09;插入完整代码&#xff1a;1.左单旋&#xff08;RotateL&#xff09;2.右单旋&#xff08;RotateR&#xff09;3.先右单旋再左单旋&#xff08;RotateRL&#xff09;1.保存的bf为02.保存的bf为13…...

【Linux-Day10-信号量,共享内存,消息队列】

信号量 信号量描述 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目&#xff0c;获取资源 时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为 P 操作。 当信号量值为 0 时&#xff0c;代表没有资源可用&#xff0c;P 操作…...

使用IntelliJ IDEA本地启动调试Flink流计算工程的2个异常解决

记录&#xff1a;471 场景&#xff1a;使用IntelliJ IDEA本地启动调试Flink流计算时&#xff0c;报错一&#xff1a;加载DataStream报错java.lang.ClassNotFoundException。报错二&#xff1a;No ExecutorFactory found to execute the application。 版本&#xff1a;JDK 1.…...

对象及日期对象

对象 1.什么是对象 类是对象的抽象,对象是类的实例 程序算法数据结构 万物皆对象,对象是一个具体的事物,看到见摸得着,对象是一组无序相关属性和方法的集合(无序,所以对象没有length属性),所有事物都是对象,列如字符串,数值,数组,函数等. 属性:事物的特征,在对象中用属性表…...

鼠标滚轮编码器解析

文章目录 前言一、鼠标滚轮编码器逻辑&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 鼠标滚轮编码器为三脚接入&#xff0c;一个COM脚C&#xff08;一般是接地&#xff09;&#xff0c;两个脉冲波形输入脚A、B&#xff0c;转动滚轮编码器会在两个脉冲输入脚上产生脉冲…...

【PTA】攀拓(PAT)- 程序设计(甲级)2023年春季考试

个人学习记录&#xff0c;代码难免不尽人意。 今天又斥资买了今年春季的真题一试&#xff0c;呃&#xff0c;感觉尽力了&#xff0c;89分&#xff0c;在当年排名23&#xff0c;感觉还不错&#xff0c;没有出现读不懂的题目和没有思路的情况&#xff0c;扣的11分分别是第二题两个…...

VMware 17 Pro 中 Ubuntu 虚拟机共享 Windows 文件夹(完美踩坑版)

前言 很多小伙伴在使用 VMware 虚拟机时&#xff0c;都会遇到一个头疼的问题&#xff1a;如何在主机和虚拟机之间快速传递文件&#xff1f; 使用 U 盘拷贝&#xff1f;来回插拔太麻烦&#xff1b;用 scp 命令传文件&#xff1f;对于新手来说又有点门槛。其实&#xff0c;VMware…...

IV测试仪选购避坑指南,这几点一定要提前了解

在光伏产业链中&#xff0c;IV测试仪应用广泛&#xff0c;覆盖组件分选、实验室检定、电站验收、运维排查等场景。市面上仪器品类繁杂&#xff0c;包含台式实验室款、生产线分选款、户外检测款&#xff0c;价格差距悬殊。不少采购人员不懂场景适配&#xff0c;盲目比价、堆砌参…...

从电视伴音收音机消亡看数字技术演进与仪器集成化趋势

1. 从一台“电视伴音收音机”说起&#xff1a;一个时代的消逝与技术演进的注脚我书桌抽屉的角落里&#xff0c;一直躺着一台老旧的收音机。它不是普通的AM/FM收音机&#xff0c;在它的波段选择旋钮上&#xff0c;除了熟悉的“AM”和“FM”&#xff0c;还有一个略显神秘的“TV”…...

多模式MRI数据融合显示帕金森病患者抑郁的结构、功能和神经化学相关

论文总结1、研究问题&#xff1a;帕金森病中抑郁症非常常见&#xff0c;但机制复杂&#xff0c;既涉及脑结构异常&#xff0c;也涉及脑功能异常&#xff0c;还可能涉及多种神经递质系统。且现有研究大多是基于单模态&#xff0c;只看结构或者只看功能&#xff0c;很少研究“结构…...

Agent Skill Exchange:标准化AI技能库,赋能智能编程助手

1. 项目概述&#xff1a;Agent Skill Exchange 是什么&#xff0c;以及它为何重要 如果你最近在折腾 Claude Code、Cursor 或者 Codex 这类 AI 编程助手&#xff0c;可能会发现一个痛点&#xff1a;虽然它们很强大&#xff0c;但要让它们真正理解并调用你项目里特定的工具链、…...

【统计推断实战】从置信区间到假设检验:如何用数据做出可靠决策

1. 从产品迭代案例看统计推断的价值 最近团队上线了一个新功能&#xff0c;产品经理信心满满地宣称能提升15%的用户留存率。但上线一周后数据波动很大&#xff0c;有人觉得效果明显&#xff0c;有人却说毫无变化。这时候该信谁的&#xff1f;其实这就是统计推断大显身手的时刻—…...

CocoaPods终极版本管理指南:掌握语义化版本控制与依赖锁定策略

CocoaPods终极版本管理指南&#xff1a;掌握语义化版本控制与依赖锁定策略 【免费下载链接】CocoaPods The Cocoa Dependency Manager. 项目地址: https://gitcode.com/gh_mirrors/co/CocoaPods CocoaPods是iOS和macOS开发中最受欢迎的依赖管理器&#xff0c;它通过智能…...

Claude Code环境变量配置全解析:从入门到精通

1. 项目概述&#xff1a;Claude Code 环境变量配置生成器如果你和我一样&#xff0c;是 Claude Code 的深度用户&#xff0c;那你一定经历过这样的时刻&#xff1a;面对一个复杂的开发任务&#xff0c;想调整一下模型的思考深度&#xff08;Effort Level&#xff09;来平衡成本…...

5个维度深度解析:如何实现高性能黑苹果系统的架构设计与优化策略

5个维度深度解析&#xff1a;如何实现高性能黑苹果系统的架构设计与优化策略 【免费下载链接】Hackintosh 国光的黑苹果安装教程&#xff1a;手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 在传统PC硬件与macOS系统兼容性的技术挑战…...

从规范到验证:构建企业级环境变量与密钥安全管理体系

1. 项目概述&#xff1a;从“裸奔”到“装甲车”的密钥管理进化在开发一个现代应用时&#xff0c;我们几乎不可避免地要和一堆敏感信息打交道&#xff1a;数据库密码、API密钥、第三方服务的访问令牌、加密盐值……这些信息&#xff0c;我们通常称之为“环境变量”或“密钥”。…...