`
bogongjie
  • 浏览: 236653 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

android 计算点是否在扇形区域

阅读更多

1. 三个点:圆心A,半径r,度数0的点B,任意点C.

先计算∠BAC的度数(弧度)。

 

public double calculatorDegree(float x1, float y1, float x2, float y2, float x3, float y3) {
		double radian = 0;

		double ab = getDistance(x1, y1, x2, y2);
		double ac = getDistance(x1, y1, x3, y3);
		double bc = getDistance(x2, y2, x3, y3);

		double value = (ab * ab + ac * ac - (bc * bc)) / (2 * ab * ac);

		radian = Math.acos(value);

		return radian;
	}

	public double getDistance(float x1, float y1, float x2, float y2) {
		double distance = 0;
		distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
		return distance;
	}

 

2. 根据弧度计算度数并且计算AC距离。

 

float x = event.getX();
		float y = event.getY();
		double radian = calculatorDegree(width / 2, height / 2, width / 2 + radius, height / 2, x, y);
		double degree =  (180 / Math.PI * radian);
		double distance = getDistance(width / 2, height / 2, x, y);

 3,根据度数和距离计算。

使用度数前先判断是否用补角。

 

计算扇型弧线起始点坐标:

 (float) (center_X + r * Math.cos(startAngle * Math.PI / 180)),(float) (center_Y + r * Math.sin(startAngle * Math.PI / 180))

 

 

分享到:
评论

相关推荐

    安卓判断某个点是否在扇形或者区域内

    通过查看和学习这些代码,你可以更好地理解如何在Android中进行点与扇形区域的判断,并将其应用到自己的项目中。 总结一下,这个知识点涉及到的主要内容有: 1. 扇形的定义及其几何特性。 2. 判断点在扇形内的数学...

    Android 根据坐标判断扇形点击区域

    在Android开发中,有时我们需要实现根据用户触摸屏幕的坐标来判断其点击的是哪个特定的图形区域,例如将一个圆分成四个扇形区域。这个任务在创建互动式UI或者游戏时非常常见。本篇将深入探讨如何实现“Android根据...

    Android画圆矩形写字扇形

    在Android开发中,有时我们需要在屏幕上绘制自定义的图形,比如圆形、矩形、文字、椭圆以及扇形。这些需求通常涉及到Android的图形库,尤其是Canvas类的使用。Canvas是Android提供的一种用于在Bitmap上绘制图形的...

    android扇形按钮

    为了实现点击事件,我们需要覆写onTouchEvent()方法,通过判断手指触摸点与每个扇形区域的相对位置来确定哪个按钮被点击。此外,我们还可以通过设置透明度和动画效果,增强用户的交互体验,例如点击按钮时,该按钮...

    Android自定义View之扇形饼状图源码

    本篇将深入探讨如何实现一个自定义的扇形饼状图,即PieChartView,该视图能够以动画方式展示各个扇形区域,并通过直线间隔各个扇形,支持点击放大缩小功能。 首先,我们需要理解饼状图的基本概念。饼状图是一种统计...

    Android 扇形 button

    本文将深入探讨如何在Android中实现扇形按钮,并区分按钮的有背景图片区域和无背景图片区域。 首先,我们需要了解扇形按钮的基本概念。扇形按钮是由一个圆形的一部分构成,形状类似于钟表的指针,可以旋转以表示...

    android 扇形菜单Demo(可直接打包运行)

    4. **触摸事件处理**:在`onTouchEvent()`方法中,开发者需要判断用户的触摸位置是否在扇形菜单的触发区域内,以此来启动或关闭菜单。这通常涉及到计算触摸点与扇形中心的距离和角度。 5. **动画效果**:为了使扇形...

    Android 点击一个圆上的不同的扇形产生不同的事件

    在Android开发中,实现“点击一个圆上的不同的扇形产生不同的事件”这一功能,涉及到的知识点包括图形绘制、触摸事件处理以及自定义View。以下将详细介绍这些内容。 首先,我们需要理解Android中的图形绘制。...

    仿扇形布局代码

    在`onLayout()`中,我们需要根据子视图的数量和扇形的角度来计算每个子视图的中心点、宽度和高度,然后调用`layout()`方法来放置子视图。 在iOS开发中,可以使用`UIStackView`配合自定义布局约束或者直接使用`...

    android分区域点击的圆饼图

    圆饼图是一种直观地表示部分与整体之间关系的图表,通过分割不同的扇形区域来代表各自所占的比例。下面将详细阐述如何在Android中创建并实现圆饼图的区域点击功能。 首先,我们需要一个可以绘制圆饼图的库。在...

    安卓图表报表相关-自定义饼状图支持点击弹出扇形.rar

    同时,为了实现点击效果,需要添加触摸事件监听,判断用户点击的位置是否在某个扇形内,这通常通过计算点击点到圆心的距离以及角度来实现。 当用户点击饼状图的某一部分时,弹出的扇形通常是一种放大或者详细显示的...

    圆形和扇形菜单

    圆形菜单通常是一个中心点向外辐射的多选项菜单,每个选项对应一个扇形区域。扇形菜单则是更加侧重于扇子形状的布局,它通常由多个等间距或不等间距的扇形部分组成,每个扇形代表一个可点击的菜单项。 在Android中...

    Android实现雷达View效果的示例代码

    同时,扇形区域的绘制使用`drawArc()`函数,通过指定起始角度、扫过角度和是否填充来创建雷达扫描的效果。 为了增加雷达扫描的动态感,我们需要实现动画。在Android中,可以使用ValueAnimator或者ObjectAnimator来...

    Android自定义View——扇形统计图的实现代码

    4. **计算扇形角度** 例如,对于第i个扇形,其角度`angles = (float) ((datas[i] * 360.0 / total)`。`RectF`对象定义了扇形所在的圆形区域,然后使用`canvas.drawArc()`方法绘制扇形,传入`RectF`、开始角度(0度...

    android自定义饼图

    我们需要重写这个方法,根据手指触摸的位置判断是否在某个扇形区域内。这通常涉及到几何计算,例如通过比较触摸点与圆心的距离以及角度来确定。 以下是一般步骤: 1. **初始化饼图数据**:收集要显示的数据,每个...

    Android 饼图 条形图 点式分布图

    关键在于计算每个扇形区域的角度,这个角度与对应的数值成正比。通过`Paint`对象设置颜色,然后用`canvas.drawArc()`方法画出各个扇形。 2. **条形图(Bar Chart)**: - 条形图用于比较不同类别的数据量。在...

    仿扇形菜单更改

    2. **布局管理**:菜单项的布局需要精确计算,确保每个扇形区域的大小和位置准确无误,这涉及到角度和半径的计算。 3. **触摸事件处理**:对于移动设备,需要处理触摸事件,识别用户的点击或滑动操作,触发相应的...

    Android 简单用canvas实现一个圆锥漏斗,按照比例分成不同颜色显示。用来做统计。-IT计算机-毕业设计.zip

    8. **响应触摸事件**:为了提高交互性,可以为自定义View添加触摸事件监听,当用户点击某个扇形区域时,可以弹出详细信息或者执行相应的操作。 此项目对于理解Android的自定义视图和数据可视化非常有帮助。它展示了...

    Android 自定义饼形图

    这个类将负责绘制各个扇形区域。在`onDraw()`方法中,利用`Canvas`提供的`drawArc()`函数来绘制饼图。`drawArc()`需要指定圆心坐标、半径、起始角度和结束角度。通过计算每个数据值占总和的比例,可以确定每个扇形的...

    android-canvas-donut-chart.7z

    2. **计算角度**:甜甜圈图由多个扇形区域组成,每个扇形对应数据项的比例。你需要根据数据值计算出每个扇形的角度。例如,如果总和为360度,那么每个部分的度数就是其值与总和的比例。 3. **设置Paint属性**:使用...

Global site tag (gtag.js) - Google Analytics