processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

这篇具有很好参考价值的文章主要介绍了processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

刚好最近在学processing,然后有不少同学遇到一个问题哈,就是如何用processing判断一个点是否在三角形、圆、椭圆、矩形内,并且联合arduino一起,通过串口通信实现用户在processing发生点击事件,然后通过arduino开发板反馈(亮灯等等),这一期我就先出如何解决利用processing判断一个点是否在三角形、圆、椭圆、矩形内的问题,下一期再联合arduino开发板出一期实现两个联合,点个赞支持一下呗!

这一期主要讲如何判断在圆和三角形内

下一期主要讲如何判断是在椭圆矩形

椭圆和矩形看这里

最新一期:直接上processing+Arduino代码,实现软硬件结合:

如何判断点击事件在圆内:

其实不用想这么复杂,我们在高中就学过圆的表达式:(x-a)²+ (y-b)²=r²,在processing中我们用于画圆的函数是

ellipse(a,b,r,r);

根据这个函数,我们画的时候就已经可以知道了圆心(a,b)、半径r,我们又知道计算两点之间距离的公式:processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互),由这公式我们就知道如果点击点p与圆心距离大于半径,那么点p一定在圆外,如果是等于或者小于,就一定是在圆上或圆内,那么我就可以直接做了

另外在processing中鼠标点击产生的事件会返回给程序一个坐标即:(mouseX,mouseY),每一次点击都会有返回,甚至如果(mouseX,mouseY)在draw()函数内调用的话还可以实现一直返回,从而实现一些跟着鼠标不断画图形、移动图形等根据这些我们就可以编写以下代码啦:

上processing代码:

void setup(){
  size(150,50);
}
void draw() {
  fill(0,0,255);
  ellipse(125,25,50,50);
}
void mouseClicked(){
if(sqrt(sq(mouseX-125)+sq(mouseY-25)) <= 25){
    println("yuan");
  }
}

运行效果:

processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

 上述函数说明:

sq(a)//a的平方
sqrt(b)//开b的平方根
/*int a=4;
sq(a)就等于16
sqrt(a)==2
*/

如何判断点击事件在三角形内:(重点、难点)

先简单说一下,其实办法很多如用向量相交求交点、算面积等等,后面再考虑出一篇数学专题说这个,这里为了方便大家理解我就用最容易理解的算三角形面积来做,显然底乘高不太现实比较复杂,那么还有其他方法吗?大家应该还记得高中学过的海伦公式,表达式为:S=,其中processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互),再结合两点之间的距离公式就可以计算了,那么我们都知道processing画一个三角形的函数是:

triangle(a1,a2,b1,b2,c1,c2);

其中三个顶点坐标a(a1,a2),b(b1,b2),c(c1,c2),那么如何实现?请看下图

当正好点击在圆内:

图一:

processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

图二:

processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

当鼠标点击点在三角形内:

图一: S=s1+s2+s3,

注意:如果点在三角形的边上也是可以的,只是其中一个面积变为0,和不变如图二:

S=s1+s2,s3等于0

当点击不在圆内:

图三:

processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

 由图三:S肯定小于s1+s2+s3,其中由图:(s1+s2+s3)-S=2*s3

图示

由这两图我们可以直观知道,如果一个点在这个三角形内,那么它与其他三个顶点相连分别构成的三个三角形的面积之和一定等于大三角形的面积,如果这个点不在此三角形中,那么其面积之和一定大于原三角形的面积

为了方便这里我们直接用等腰三角形做,其他三角形也是一样的喔,只是计算三角形面积稍微改一下就好,直接上代码processing:

void setup(){
  size(150,50);
}
void draw() {
  fill(0,255,0);//(R,G,B)绿色
  triangle(75,0,50,50,100,50);
}
void mouseClicked(){
  if((mouseX>=50)&(mouseX<=100)&(mouseY>=0)&(mouseY<=50)){
    float a = sqrt(sq(mouseX-50)+sq(mouseY-50));
    float b = sqrt(sq(mouseX-75)+sq(mouseY-0));
    float c = sqrt(sq(mouseX-100)+sq(mouseY-50));
    float d = sqrt(sq(75-50)+sq(0-50));
    float p1 = (a+b+d)/2;
    float p2 = (a+c+50)/2;
    float p3 = (c+b+d)/2;
    float s = sqrt(p1*(p1-a)*(p1-b)*(p1-d))+sqrt(p2*(p2-a)*(p2-c)*(p2-50))+sqrt(p3*(p3-c)*(p3-b)*(p3-d));
    if (s>=50*50/2-10 & s<=50*50/2+10){//+10和-10是为了减小误差,因为计算过程有较多小数
    println("sanjiaoxing");
    }
  }
}

代码函数说明:

a,b,c;分别是鼠标到三个顶点的距离

d;是等腰三角形的腰长

p1,p2,p3;分别是三个顶点如鼠标点击点构成三角形的p(海伦公式里的p)

s;就是三个三个顶点如鼠标点击点构成三角形的面积和,可以看出是由三部分加起来的,其中每一部分都是海伦公式计算出来的;

运行效果:

processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)

如何判断点击事件在椭圆内:(重点)​​​​​​​

废话不多说,我们都知道椭圆表达式:processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)(焦点在x轴)

今天有写代码有画图还打这么多字实在是花了好久,点个赞支持一下吧,剩下的会在下一篇尽快更噢,请留意,可以进我的博客主页的processing-arduino专栏查看噢!!!感谢各位的理解与支持!!!文章来源地址https://www.toymoban.com/news/detail-409079.html

到了这里,关于processing判断一个点是否在三角形、圆、椭圆、矩形内(超详细鼠标交互)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • OpenCV项目开发实战-- 将一个三角形变形为另一个三角形 ( C++ / Python )代码实现

    OpenCV项目开发实战-- 将一个三角形变形为另一个三角形 ( C++ / Python )代码实现

     文末附基于Python和C++两种方式实现的测试代码下载链接 图 1:左图中蓝色三角形内的所有像素都已转换为右图中的蓝色三角形。 在本教程中,我们将看到如何将图像中的单个三角形变形为不同图像中的另一个三角形。 在计算机图形学中,人们一直在处理扭曲三角形,因为任

    2024年02月09日
    浏览(17)
  • C语言程序设计:输入一个三角形的三条边长,求出三角形的面积。

    C语言程序设计:输入一个三角形的三条边长,求出三角形的面积。

    已知三角形的三边长a,b,c,则该三角形的面积公式为:           area=  其中s = (a+b+c)/2

    2024年02月06日
    浏览(18)
  • python代码实现判断三角形类型,使用pytest进行代码测试,生成allure测试报告

    python代码实现判断三角形类型,使用pytest进行代码测试,生成allure测试报告

    一、python代码判断三角形类型 写代码之前首先我们要知道满足三角形的条件: 前提条件:三角形边长都为大于0的数字 构成三角形:两边之和大于第三边 即 a+b c  and a+cb and  b+ca   (此三个条件需要同时满足) 满足构成三角形之后,要考虑构成三角形的类型: 三角形分为:

    2024年02月05日
    浏览(11)
  • 如何用css画一个三角形?

    要使用CSS显示一个三角形,你可以利用元素的边框属性和尺寸调整来实现。下面是一种常用的方法: HTML: CSS: 在上面的示例中,我们创建了一个带有类名 .triangle 的 div 元素。通过设置宽度和高度为0,我们创建了一个没有实际内容的空元素。然后,通过设置边框属性,我们定

    2024年02月12日
    浏览(7)
  • OpenGL实现第一个窗口-三角形

    OpenGL实现第一个窗口-三角形

    1.简介 此代码是基于Qt+OpenGL实现的,但是大部分的代码是OpenGL,Qt封装了一些类,方便使用。 2.准备工作 QOpenGLWidget 提供了三个便捷的虚函数,可以重写,用来重写实现典型的OpenGL任务。 不需要GLFW。 paintGL:渲染OpenGL场景。widget需要更新时调用。 resizeGL:设置OpenGL视口、投影

    2024年02月08日
    浏览(10)
  • PCL 计算一个平面与一个三角形的交线

    这里实现一个很有趣的功能,就是获取一个平面与一个三角形的交线,具体的思路很简单,就是借助之前的博客中的思路:Matlab 计算一个平面与一条线段的交点,我们只需要遍历三角形中的所有边即可获取我们想要的交线,这里是PCL版本。

    2024年02月06日
    浏览(11)
  • Android GlSurfaceView 入门教程 : 绘制一个三角形

    Android GlSurfaceView 入门教程 : 绘制一个三角形

    GlSurfaceView 是 Android 中的一个类,继承自 SurfaceView ,是用于显示 OpenGL ES 图形渲染的一个 View 。 OpenGL ES 是一种跨平台的图形 API ,用于渲染 2D 和 3D 图形,也可以将相机的画面显示到 GlSurfaceView 上,从而实现滤镜的效果。 GlSurfaceView 提供了一个可以在 Android 应用程序中绘制

    2024年02月13日
    浏览(11)
  • css实现卡片的左上角有一个三角形的遮盖效果

    css实现卡片的左上角有一个三角形的遮盖效果

    需求: 卡片的左上角有一个绿色的三角形标签,用来区分状态 实现:

    2024年02月14日
    浏览(37)
  • 用python画一个五角星的代码,用python画星号三角形

    用python画一个五角星的代码,用python画星号三角形

    大家好,小编来为大家解答以下问题,用python画一个五角星的代码,用python画星号三角形,今天让我们一起来看看吧! 大家好,小编为大家解答python编写一个打地鼠的游戏程序的问题。很多人还不知道python编写一个打地鼠的游戏代码,现在让我们一起来看看吧! 如果你没有

    2024年03月24日
    浏览(11)
  • css基础知识十八:CSS如何画一个三角形?原理是什么?

    css基础知识十八:CSS如何画一个三角形?原理是什么?

    一、前言 在前端开发的时候,我们有时候会需要用到一个三角形的形状,比如地址选择或者播放器里面播放按钮 通常情况下,我们会使用图片或者svg去完成三角形效果图,但如果单纯使用css如何完成一个三角形呢? 实现过程似乎也并不困难,通过边框就可完成 二、实现过程

    2024年02月13日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包