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 画圆的更多相关文章

  1. Unity GL画折线

    新建一个脚本,这个物体得挂在有摄像机组件的物体上才能生效 OnPostRender() 这个函数才会被自动调用(类似生命周期自动调用) 然后就可以代码画线了,原理是openGL的画线 using Un ...

  2. unity gl 画线

    using UnityEngine; using System.Collections; public class TGLLine : MonoBehaviour { private static M ...

  3. 《图形学》实验六:中点Bresenham算法画圆

    开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 ...

  4. 【openGL】画圆

    #include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> #include <math ...

  5. OpenGL 3:画圆

    这次使用OpenGL画圆,而且中间画一个实心的五角星. 1. 画实心五角: 由于之前使用Polygen画会出现故障,或许是各个GPU硬件也会不一样的,所以使用Polygen画实心五角星并不可靠: 所以 ...

  6. 中点Bresenham画圆

    这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步. 算法步骤: (1) 输入圆的半径R. (2) 计算初始值d = 1 - ...

  7. WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 某个项目需求中需要在前端进行画圆查询,将圆范围上的多边形要素 ...

  8. ArcGIS JS 学习笔记2 实现仿百度的拖拽画圆

    一.前言 吐槽一下,百度在国内除了百度地图是良心产品外,其他的真的不敢恭维.在上一篇笔记里,我已经实现了自定义的地图测量模块.在百度地图里面(其他地图)都有一个周边搜索的功能,拖拽画一个圆,然后以圆半 ...

  9. canvas入门(画圆)

    1.想在H5上画一个canvas,必须在页面上你需要的地方添加canvas标签, <canvas id="myCanvas"></canvas>   接着需 ...

随机推荐

  1. 2 ubuntu 16.04 安装Elastic Stack

    一: 安装JAVA8          添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 安装oracle- ...

  2. webrower + CEF

    理解WebKit和Chromium: Content API和CEF3 标签:               apiAPIAPibrowserchromeChromehtml5HTML5Html5web ...

  3. 2.JasperReports学习笔记2-创建简单的报表例子

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 一.创建简单的jrxml文件 这里可以手动创建jrxml文件,也可以使用 ...

  4. webStorage

    1.HTML5中的本地存储概念是什么? 很多时候我们会存储用户本地信息到电脑上,例如:比方说用户有一个填充了一半的长表格,然后突然网络连接断开了,这样用户希望你能存储这些信息到本地,当网络恢复的时候, ...

  5. ls- 查看文件信息

    通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限),查看目录信息等等,ls 命令在日常的linux操作中用的很多,在此给大家介绍一下ls 命令的使 ...

  6. 面试题: Spring 框架 Bean的生命周期

    [Java面试五]Spring总结以及在面试中的一些问题.   1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本 ...

  7. 2、misa统计SRR结果

    参考: https://www.sogou.com/link?url=hedJjaC291NYNxVe4xgB4c3bUxXRMqZrT93cntTAgYfyBbRAdP9kIA.. https:// ...

  8. MQTT结构分析

    MQTT,是: 轻量级的消息订阅和发布(publish/subscribe)协议 建立在TCP/IP协议之上 IoT,internet of things,物联网,MQTT在这方面应用较多. 官方网站 ...

  9. NPM run start使用本地的http-server

    在项目开发过程中,Visual Studio 2015 一个Solution中有一个前端项目 Myproject.FrontEnd,我们使用node.js, npm来进行管理 在这个项目中,有一个pa ...

  10. 获取app下载链接

    https://itunes.apple.com/cn/app/id1398635899?mt=8 只需要更改其中的id就可以了