首页 > 其他分享 >雷达图的绘制(绘制圆的拓展)

雷达图的绘制(绘制圆的拓展)

时间:2023-02-14 14:44:44浏览次数:41  
标签:arr vh float 拓展 num using 雷达 绘制 rect

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 雷达图 And 圆
/// 提示:
/// 1.如果要挂载在image上,要删除image组件
/// 2.如果要挂载在空对象上,要加上CanvasRender组件
/// </summary>
public class ReadMap : MaskableGraphic
{
public Color outColor = Color.cyan;
public Color inColor = Color.red;
//这是雷达图的数据
public float[] arr;
// Start is called before the first frame update
/// <summary>
/// 重写绘制放法
/// </summary>
/// <param name="vh"></param>
protected override void OnPopulateMesh(VertexHelper vh)
{
//首先要清理脏数据
vh.Clear();
//计算分的角度个数
int num = arr.Length;
if(num >= 3)
{
//获取对象的宽高,用对象较短的一边作为雷达图的最大值(即半径)
Rect rect = this.rectTransform.rect;
float r = rect.width < rect.height ? rect.width / 2 : rect.height / 2;
//Linp语句求最大值和半径做比 求出他的比值
float p = r / arr.Max();//(max是Linp语句)
//计算每个角度大小
float ang = 2 * Mathf.PI / num;
//添加中心点
vh.AddVert(Vector3.zero, outColor, new Vector2(0.5f, 0.5f));
for (int i = 0; i < num; i++)
{
//计算坐标(*arr【i】是为了控制每个值得大小 *p是为了让他以比例的方式显示,不至于超出太多)
float x = Mathf.Sin(i * ang) * arr[i] * p;
float y = Mathf.Cos(i * ang) * arr[i] * p;
//计算uv坐标
float uvx = (x + r) / (r + r);
float uvy = (y + r) / (r + r);
//添加顶点
vh.AddVert(new Vector3(x, y, 0), inColor, new Vector2(uvx, uvy));
//绘制圆(雷达图)
if (i == 0)
{
//首尾相连
vh.AddTriangle(0, num, 1);
}
else
{
vh.AddTriangle(0, i, i + 1);
}
}
}
}
}

 

标签:arr,vh,float,拓展,num,using,雷达,绘制,rect
From: https://www.cnblogs.com/zanzz/p/17119526.html

相关文章

  • 使用 Kitten 编程猫绘制一个 Y 方向平铺的立方体集合
    效果如下图所示:我们实际上使用了2D来模拟3D效果。应用程序启动时,默认只绘制一个立方体,因此我们在初始绘制的函数里,只执行动态绘制X方向的立方体这一个逻辑。因为默......
  • [WPF] 使用Silk.NET绘制D3D9或OpenGL内容并完美解决空域问题。
    可扩展渲染控件实现的基本思路(D3D、OpenGL绘制所使用的基类):   首先创建一个抽象类FramebufferBase,该类主要记录当前控件宽高和图像资源。publicabstractclas......
  • 多变量两两相互关系联合分布图的Python绘制
      本文介绍基于Python中seaborn模块,实现联合分布图绘制的方法。  联合分布(JointDistribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析......
  • WPF 使用动画绘制一个点赞大拇指
    效果图     好久没有写wpf了。最近看到飞书的点赞动画非常有意思,决定试试,虽然不及飞书那样的绚丽,但是练手还是可以的,希望自己的手艺还在!那么如何写一个这样的......
  • Bean的拓展和应用
    一.Bean的作用域1.单例模式(spring的默认机制,即拿相同的bean的时候对象都是相同的,不会造成资源浪费)<beanid="user"class="top.lostyou.pojo.user"p:name="jay周"p:se......
  • 大爽Python入门教程 2-7 *拓展实践,对比与思考
    大爽Python入门公开课教案点击查看教程总目录本文偏难。推荐等第一二三四章上完后,回过来拓展阅读。基础情景思考假设有这样一张成绩表最左边的一列是名字,起名麻......
  • 大爽Python入门教程 2-6 拓展练习
    大爽Python入门公开课教案点击查看教程总目录方位输出第一章有一个思考题,方位变换:小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度),小明面朝哪里?小明转过......
  • android开发kotlin顶级函数和拓展函数的实现原理
    android开发kotlin顶级函数和拓展函数的实现原理//我们编写的源代码在MainActivity.kt下面,如下:funtopTest(){print("123")}funMainActivity.extTest(){pr......
  • Kitten 动态绘制 Y 轴方向立方体的实现方法
    我们之前的实践里,已经探讨了在水平方向动态绘制立方体的积木搭建方法,如下图所示:接下来我们期望在Y轴方向也绘制立方体,如下图所示。其实只需要在水平方向依次绘制两列......
  • 雷达单、双程链路方程以及一些方程
    这篇文章主要是因为前两天有个同学让帮忙看一道通信的题,然后在之前的笔记本上看到相关的函数,就想着记录下来,用于后来学习用。忘了当时是看得那篇文章了,如有侵权请联系......