自定义View(英雄联盟七星图)之准备工作_qq主页背景要lol七星牌子-程序员宅基地

技术标签: 自定义View  android  

工欲善其事,必先利其器!自定义view中有很重要一部分就是关于图形坐标轨迹的计算,所以在进行绘制英雄联盟七星图时,我们先要把我们刀磨好,建立对应的数学模型。对于七星图本次主要贴出两种方法来建立模型计算,今天就来表述最简单直接的一种方法。

一、故事背景

MSI季中赛正在进行中,LPL加油!哈哈,相信喜爱玩LOL的朋友们都下载了LOL掌上英雄联盟盒子,在战绩模块中有一个七星图来显示个人近两个月的数据分析如下:
在这里插入图片描述

看着这个View感觉还不错,不如自己也来编码一个七星图;

二、?

在开始编码之前我们首先要设计好我们的绘制流程这样才能找到突破口,其实这个自定view看起来没有太大的难度,有两种方法,一种是最简单直接的建立坐标系和模型;二是动态的建立模型来计算,本篇我们先直接简单的方法,我们只需要绘制对应的正七边形,然后在绘制对应数据点将其连接起来就行了,唯一相对叫麻烦的是我们如何确定每个七边形的坐标点,若没有思路的朋友们可以先思考一下再继续,下面我就来分享一下我的思路。

三、建立模型

首先根据android中View体系的坐标系来建立一个坐标系,比在其中画一个半径为r的圆(圆形为O),在圆内作一个正七边形,其每个定点在圆上的坐标为:A、B、C、D、E、F、G。过O作Y轴的垂线交与圆K,过O作X轴的垂线交与圆A,过O作ED的垂线交与ED于S,过B作OH的垂线交OH于M,连接OB、OE、OB、OC。
在这里插入图片描述

四、计算对应坐标和个人数据对应能力上的点坐标
其中我们设:
	设:
		OK = OA = OB = OC = OE = r ;
		AH = Δx = x ;
		PK = Δy = y ;
		∵ 正七边形ABCDEFG为正多边形
		∴ ∠AOB = ∠MOB = 2π / 7
		  ∠OED = ∠OES = 5π / 14
		  ∠NOC = 3π / 7
		∴  几何计算得出各点坐标为:
				A ( r + x , y ) 
			    B [ x + ( 1 + sin∠MOB) * r , y + ( 1 - cos∠MOB ) * r]
			    C [ x + ( 1 + sin∠NOC) * r , y + ( 1 + cos∠NOC ) * r]
			    D [ x + ( 1 - cos∠OES) * r , y + ( 1 + sin∠OES ) * r]
			    E [ x + ( 1 - cos∠OES) * r , y + ( 1 + sin∠OES ) * r]
			    F [ x + ( 1 - sin∠NOC) * r , y + ( 1 + cos∠NOC ) * r]
			    G [ x + ( 1 - sin∠MOB) * r , y + ( 1 - cos∠MOB ) * r]
			    
		现在开始计算对应能力点的坐标:
		设点Q为OB上的一点,O坐标为(x1,y1) ,B坐标为(x2,y2) ,坐标系远点为O1
		根据 
		∵向量O1Q = 向量O1O + 向量OQ
				= 向量O1O + λ * 向量OB
		        = 向量O1O + λ* (向量O1B - 向量O1O)
		        =(1-λ) * 向量O1O + λ * 向量O1B
		∴ Q 的坐标为 [ (1 - λ ) * x1 + λ * x2 , (1 - λ ) * y1 + λ * y2 ]
		

至此我们的七星图前期的核心工作就做完了,当然这是最直接方法,但仅限于此,下一篇我们将讲述另一种动态的计算模型。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33225399/article/details/90108262

智能推荐

13 Kubectl命令概览_kube_ps1关闭-程序员宅基地

文章浏览阅读81次。kubectx:用于切换kubernetes context kube-ps1:为命令行终端增加$PROMPT字段 kube-shell:交互式带命令提示的kubectl终端kube-shell开源项目kube-shell可以为kubectl提供自动的命令提示和补全,使用起来特别方便,推荐给大家。Kube-shell有以下特性:命令提示,给出命令的使用说明 自动补全,列出可选命令并可以通过tab键自动补全,支持模糊搜索 高亮 使用tab键可以列出可选的对象 vim模式M..._kube_ps1关闭

ensp各种报错积累(以及解决方法)_ensp配置路由地址时错误-程序员宅基地

文章浏览阅读1k次,点赞11次,收藏9次。此报错的意思是请续订默认配置,就是让你去一级一级的删除,首先删除你设置的允许vlan通过的命令,然后去取消掉更改的端口类型命令(就是在配置命令前面加一个undo),再去更改端口类型就成功了。此报错的意思是已经加入了接口,不能在修改模式,所以需要先去把端口全部删除,在修改模式即可成功。他的意思就是说这个IP地址已经配置了,不需要在配置了。2.修改链路聚合模式的时候。3.更改IP地址的时候。_ensp配置路由地址时错误

经典JS-序列号_ucfp:74a28a8b-b3fb-4602-ca5f-0ebdf880c1ff-16927960-程序员宅基地

文章浏览阅读10w+次。3D0E1D4E75686FA0FF1C6F6F626F6F6F6F6F6F6F8F381B2FFF2D6FEF396F6F6A1B6E6F6D762B39E3021B282C725C726F4F6F6F6F5F5F5C330E1F06251C335B5E0D580E5E095D575B0E56560B5F0B41051C6F9F4FCC60636EBE7FBE7A3E637EB613394327_ucfp:74a28a8b-b3fb-4602-ca5f-0ebdf880c1ff-1692796091560

Linux下使用crontab定时任务进行Tomcat日志分割_crontab多个任务如何分割-程序员宅基地

文章浏览阅读722次。Linux下使用crontab定时任务进行Tomcat日志分割_crontab多个任务如何分割

AGV小车导航控制 研一《智能控制》课程文献阅读作业_四轮agv传递函数-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏55次。摘要AGV(即自动导向小车)是一种集控制、定位、各种传感器技术于一体的设备。随着智能车技术的不断发展,智能车的应用范围和功能都将大为拓展,现已逐渐用于工业与民用领域。但是由于负载变化、使用环境条件恶劣等原因,在实际运用时AGV小车在定位及控制上依然有许多难点需要攻克。本文即针对上述难点,研究并设计了一种新型的驱动方式和控制系统,利用模糊控制与PID控制相结合的方法,在开机初期误差矫正快,后期平稳,可以迅速跟踪期望轨迹。在实验状态下,运行速度为1米每秒时,0.5米的误差约5秒即可消除,达到稳定状态。引言_四轮agv传递函数

Android XML文件使用-程序员宅基地

文章浏览阅读230次。转自:http://www.cnblogs.com/zhengtao/articles/1924940.html一、布局文件:在layout目录下,使用比较广泛;  我们可以为应用定义两套或多套布局,例如:可以新建目录layout_land(代表手机横屏布局),layout_port(代表手机竖屏布局),系统会根据不同情况自动找到最合适的布局文件,但是在同一界面的两套不同布局文

随便推点

当mysql数据库转换为sqlserver数据库时常见报错_mysql 数据导出在sqlserver不能用-程序员宅基地

文章浏览阅读527次。↵下面是我在把mysql数据库转换为sqlserver数据库时候遇到过的一些错,踩过的坑,把它总结下来防止以后再出错。报错 1:com.microsoft.sqlserver.jdbc.SQLServerException: 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'user_student'中的标识列指定显式值。出错原因:当mysql数据库转换为sqlserver数据库时,如果第一个id设置为自动递增,那么String sql = "..._mysql 数据导出在sqlserver不能用

LeetCode 刷题常用数据结构(Java 中的实现)_javalist集合map组合刷题 leetcode-程序员宅基地

文章浏览阅读1.9k次,点赞4次,收藏27次。记录常用数据结构(栈、队列、数组、列表、字符串、集合等),在 Java 中如何使用它的实现类。_javalist集合map组合刷题 leetcode

Visual Studio Code 设置成中文_visualstudiocode中文-程序员宅基地

文章浏览阅读6.7k次,点赞5次,收藏4次。Visual Studio Code 编辑器设置成中文 分2个步骤1、【查看】--【扩展】(Ctrl+Shift+X) 在扩展:商店中输入Chinese,搜索到 适用于 VS Code 的中文(简体)语言包,点击安装; 2、Ctrl+Shift+P,调出搜索框,输入 Configure Display Language,选中此配置项; 把配置页面中的"..._visualstudiocode中文

[TypeScript][JavaScript]数组遍历方法总结_typescript 数组遍历-程序员宅基地

文章浏览阅读1.2k次。本文整理自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array对比every(),some(),includes(),indexOf(),lastIndexOf(),find(),findIndex(),forEach(),map(),filter(),fill()..._typescript 数组遍历

MySQL数据库的基本概念与安装-程序员宅基地

文章浏览阅读1.2k次,点赞26次,收藏23次。数据库作为一种系统化的数据存储、管理和检索的软件,已成为我们日常生活和工作中不可或缺的一部分,无论是电子商务网站、社交媒体平台,还是企业内部的各种信息系统,背后都有数据库的身影

正则化的作用以及L1和L2正则化的区别_l1l2正则化原理和区别-程序员宅基地

文章浏览阅读3.5w次,点赞103次,收藏505次。0 正则化的作用正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。但是使用正则化来防止过拟合的原理是什么?L1和L..._l1l2正则化原理和区别

推荐文章

热门文章

相关标签