Unity GL 画圆
Unity下GL没有画圆的函数,只能自己来了。
如果能帮到大家,我也很高兴。
虽然没有画圆的函数,但是能画直线,利用这一点,配合微积分什么的,就可以画出来了。反正就是花很多连在一起的直线,每条直线足够短的时候,就足够圆了
- void DrawCircle(float x, float y, float z, float r, float accuracy)
- {
- GL.PushMatrix ();
- //绘制2D图像
- GL.LoadOrtho ();
- float stride = r * accuracy;
- float size = / accuracy;
- float x1 = x, x2 = x, y1 = , y2 = ;
- float x3 = x, x4 = x, y3 = , y4 = ;
- double squareDe;
- squareDe = r * r - Math.Pow (x - x1, );
- squareDe = squareDe > ? squareDe : ;
- y1 = (float)(y + Math.Sqrt (squareDe));
- squareDe = r * r - Math.Pow (x - x1, );
- squareDe = squareDe > ? squareDe : ;
- y2 = (float)(y - Math.Sqrt (squareDe));
- for (int i = ; i < size; i++) {
- x3 = x1 + stride;
- x4 = x2 - stride;
- squareDe = r * r - Math.Pow (x - x3, );
- squareDe = squareDe > ? squareDe : ;
- y3 = (float)(y + Math.Sqrt (squareDe));
- squareDe = r * r - Math.Pow (x - x4, );
- squareDe = squareDe > ? squareDe : ;
- y4 = (float)(y - Math.Sqrt (squareDe));
- //绘制线段
- GL.Begin (GL.LINES);
- GL.Color (Color.blue);
- GL.Vertex (new Vector3 (x1 / Screen.width, y1 / Screen.height, z));
- GL.Vertex (new Vector3 (x3 / Screen.width, y3 / Screen.height, z));
- GL.End ();
- GL.Begin (GL.LINES);
- GL.Color (Color.blue);
- GL.Vertex (new Vector3 (x2 / Screen.width, y1 / Screen.height, z));
- GL.Vertex (new Vector3 (x4 / Screen.width, y3 / Screen.height, z));
- GL.End ();
- GL.Begin (GL.LINES);
- GL.Color (Color.blue);
- GL.Vertex (new Vector3 (x1 / Screen.width, y2 / Screen.height, z));
- GL.Vertex (new Vector3 (x3 / Screen.width, y4 / Screen.height, z));
- GL.End ();
- GL.Begin (GL.LINES);
- GL.Color (Color.blue);
- GL.Vertex (new Vector3 (x2 / Screen.width, y2 / Screen.height, z));
- GL.Vertex (new Vector3 (x4 / Screen.width, y4 / Screen.height, z));
- GL.End ();
- x1 = x3;
- x2 = x4;
- y1 = y3;
- y2 = y4;
- }
- GL.PopMatrix ();
- }
参数分别为: x,y,z 中心点三维坐标, r 圆的半径, accuracy 精度,精度越小,越圆
如有错误,请不吝指教
Unity GL 画圆的更多相关文章
- Unity GL画折线
新建一个脚本,这个物体得挂在有摄像机组件的物体上才能生效 OnPostRender() 这个函数才会被自动调用(类似生命周期自动调用) 然后就可以代码画线了,原理是openGL的画线 using Un ...
- unity gl 画线
using UnityEngine; using System.Collections; public class TGLLine : MonoBehaviour { private static M ...
- 《图形学》实验六:中点Bresenham算法画圆
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 ...
- 【openGL】画圆
#include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> #include <math ...
- OpenGL 3:画圆
这次使用OpenGL画圆,而且中间画一个实心的五角星. 1. 画实心五角: 由于之前使用Polygen画会出现故障,或许是各个GPU硬件也会不一样的,所以使用Polygen画实心五角星并不可靠: 所以 ...
- 中点Bresenham画圆
这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步. 算法步骤: (1) 输入圆的半径R. (2) 计算初始值d = 1 - ...
- WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 某个项目需求中需要在前端进行画圆查询,将圆范围上的多边形要素 ...
- ArcGIS JS 学习笔记2 实现仿百度的拖拽画圆
一.前言 吐槽一下,百度在国内除了百度地图是良心产品外,其他的真的不敢恭维.在上一篇笔记里,我已经实现了自定义的地图测量模块.在百度地图里面(其他地图)都有一个周边搜索的功能,拖拽画一个圆,然后以圆半 ...
- canvas入门(画圆)
1.想在H5上画一个canvas,必须在页面上你需要的地方添加canvas标签, <canvas id="myCanvas"></canvas> 接着需 ...
随机推荐
- Java父类构造器的讲解
众所周知,对于Java中的所有类而言,它们有一个根父类,即java.lang.Object类. 对于Java中构造器执行的顺序而言,程序执行的顺序为,先执行父类的非静态代码块,然后执行父类的相应的构造 ...
- js拼的onclick调用方法需要注意的地方 之一
1.首先,明确一点,js方法中参数可以传递字符串,对象,number类型等,对象传递的是引用,方法中修改了,会影响到方法外面的对象. 2.下面重现项目中遇到的一个问题:(其实就是要明白通过引号来拼接字 ...
- tomcat 自带jdk
http://blog.csdn.net/b452608/article/details/70143466
- javadoc 工具生成开发API文档
=====================先来一点成就感===================== package com.springMybatis.dao; import com.springMy ...
- C语言学习笔记--struct 和 union关键字
1.struct关键字 C 语言中的 struct 可以看作变量的集合struct中的每个数据成员都有独立的存储空间. 结构体与柔性数组 (1)柔性数组即数组大小待定的数组 (2)C 语言中可以由结构 ...
- “box-shadow”属性(转)
“box-shadow”属性 box-shadow属性是一个CSS3属性,允许我们在几乎任何元素上来创建阴影效果,类似于在设计软件中的”drop shadow”.这些阴影效果允许我们在原本平面的.二维 ...
- Learning Python 002 print() 和 input()
Python print() 和 input() print()函数 print()函数可以向终端中输入指定的内容. 输出当个字符串 .py文件中,输入下面的代码,并保存: print('hello ...
- easyui学习笔记1-(datagrid+dialog)
jQuery EasyUI是一组基于jQuery的UI插件集合体.我的理解:jquery是js的插件,easyui是基于jquery的插件.用easyui可以很轻松的打造出功能丰富并且美观的UI界面. ...
- Windows 7,无法访问internet,DNS无响应
我电脑网络连接显示有internet访问,但是网页打不开,QQ上不了,但可以PING通谷歌DNS 8.8.8.8,一PING域名就无法解析. 解决方法:开始-运行-输入"netsh wins ...
- git上传提交遇到问题
git上传提交遇到问题 一. The local repository is out of date.Make sure all changes have been pulled from the r ...