国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

這篇具有很好參考價(jià)值的文章主要介紹了processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

剛好最近在學(xué)processing,然后有不少同學(xué)遇到一個(gè)問(wèn)題哈,就是如何用processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi),并且聯(lián)合arduino一起,通過(guò)串口通信實(shí)現(xiàn)用戶在processing發(fā)生點(diǎn)擊事件,然后通過(guò)arduino開(kāi)發(fā)板反饋(亮燈等等),這一期我就先出如何解決利用processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)的問(wèn)題,下一期再聯(lián)合arduino開(kāi)發(fā)板出一期實(shí)現(xiàn)兩個(gè)聯(lián)合,點(diǎn)個(gè)贊支持一下唄!

這一期主要講如何判斷在圓和三角形內(nèi)

下一期主要講如何判斷是在橢圓矩形內(nèi)

橢圓和矩形看這里

最新一期:直接上processing+Arduino代碼,實(shí)現(xiàn)軟硬件結(jié)合:

如何判斷點(diǎn)擊事件在圓內(nèi):

其實(shí)不用想這么復(fù)雜,我們?cè)诟咧芯蛯W(xué)過(guò)圓的表達(dá)式:(x-a)2+ (y-b)2=r2,在processing中我們用于畫(huà)圓的函數(shù)是

ellipse(a,b,r,r);

根據(jù)這個(gè)函數(shù),我們畫(huà)的時(shí)候就已經(jīng)可以知道了圓心(a,b)、半徑r,我們又知道計(jì)算兩點(diǎn)之間距離的公式:processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互),由這公式我們就知道如果點(diǎn)擊點(diǎn)p與圓心距離大于半徑,那么點(diǎn)p一定在圓外,如果是等于或者小于,就一定是在圓上或圓內(nèi),那么我就可以直接做了

另外在processing中鼠標(biāo)點(diǎn)擊產(chǎn)生的事件會(huì)返回給程序一個(gè)坐標(biāo)即:(mouseX,mouseY),每一次點(diǎn)擊都會(huì)有返回,甚至如果(mouseX,mouseY)在draw()函數(shù)內(nèi)調(diào)用的話還可以實(shí)現(xiàn)一直返回,從而實(shí)現(xiàn)一些跟著鼠標(biāo)不斷畫(huà)圖形、移動(dòng)圖形等根據(jù)這些我們就可以編寫(xiě)以下代碼啦:

上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");
  }
}

運(yùn)行效果:

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

?上述函數(shù)說(shuō)明:

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

如何判斷點(diǎn)擊事件在三角形內(nèi):(重點(diǎn)、難點(diǎn))

先簡(jiǎn)單說(shuō)一下,其實(shí)辦法很多如用向量相交求交點(diǎn)、算面積等等,后面再考慮出一篇數(shù)學(xué)專(zhuān)題說(shuō)這個(gè),這里為了方便大家理解我就用最容易理解的算三角形面積來(lái)做,顯然底乘高不太現(xiàn)實(shí)比較復(fù)雜,那么還有其他方法嗎?大家應(yīng)該還記得高中學(xué)過(guò)的海倫公式,表達(dá)式為:S=,其中processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互),再結(jié)合兩點(diǎn)之間的距離公式就可以計(jì)算了,那么我們都知道processing畫(huà)一個(gè)三角形的函數(shù)是:

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

其中三個(gè)頂點(diǎn)坐標(biāo)a(a1,a2),b(b1,b2),c(c1,c2),那么如何實(shí)現(xiàn)?請(qǐng)看下圖

當(dāng)正好點(diǎn)擊在圓內(nèi):

圖一:

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

圖二:

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

當(dāng)鼠標(biāo)點(diǎn)擊點(diǎn)在三角形內(nèi):

圖一: S=s1+s2+s3,

注意:如果點(diǎn)在三角形的邊上也是可以的,只是其中一個(gè)面積變?yōu)?,和不變?nèi)鐖D二:

S=s1+s2,s3等于0

當(dāng)點(diǎn)擊不在圓內(nèi):

圖三:

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

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

圖示

由這兩圖我們可以直觀知道,如果一個(gè)點(diǎn)在這個(gè)三角形內(nèi),那么它與其他三個(gè)頂點(diǎn)相連分別構(gòu)成的三個(gè)三角形的面積之和一定等于大三角形的面積,如果這個(gè)點(diǎn)不在此三角形中,那么其面積之和一定大于原三角形的面積

為了方便這里我們直接用等腰三角形做,其他三角形也是一樣的喔,只是計(jì)算三角形面積稍微改一下就好,直接上代碼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是為了減小誤差,因?yàn)橛?jì)算過(guò)程有較多小數(shù)
    println("sanjiaoxing");
    }
  }
}

代碼函數(shù)說(shuō)明:

a,b,c;分別是鼠標(biāo)到三個(gè)頂點(diǎn)的距離

d;是等腰三角形的腰長(zhǎng)

p1,p2,p3;分別是三個(gè)頂點(diǎn)如鼠標(biāo)點(diǎn)擊點(diǎn)構(gòu)成三角形的p(海倫公式里的p)

s;就是三個(gè)三個(gè)頂點(diǎn)如鼠標(biāo)點(diǎn)擊點(diǎn)構(gòu)成三角形的面積和,可以看出是由三部分加起來(lái)的,其中每一部分都是海倫公式計(jì)算出來(lái)的;

運(yùn)行效果:

processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

如何判斷點(diǎn)擊事件在橢圓內(nèi):(重點(diǎn))???????

廢話不多說(shuō),我們都知道橢圓表達(dá)式:processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)(焦點(diǎn)在x軸)

今天有寫(xiě)代碼有畫(huà)圖還打這么多字實(shí)在是花了好久,點(diǎn)個(gè)贊支持一下吧,剩下的會(huì)在下一篇盡快更噢,請(qǐng)留意,可以進(jìn)我的博客主頁(yè)的processing-arduino專(zhuān)欄查看噢?。?!感謝各位的理解與支持!?。?span toymoban-style="hidden">文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-409079.html

到了這里,關(guān)于processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenCV項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)-- 將一個(gè)三角形變形為另一個(gè)三角形 ( C++ / Python )代碼實(shí)現(xiàn)

    OpenCV項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)-- 將一個(gè)三角形變形為另一個(gè)三角形 ( C++ / Python )代碼實(shí)現(xiàn)

    ?文末附基于Python和C++兩種方式實(shí)現(xiàn)的測(cè)試代碼下載鏈接 圖 1:左圖中藍(lán)色三角形內(nèi)的所有像素都已轉(zhuǎn)換為右圖中的藍(lán)色三角形。 在本教程中,我們將看到如何將圖像中的單個(gè)三角形變形為不同圖像中的另一個(gè)三角形。 在計(jì)算機(jī)圖形學(xué)中,人們一直在處理扭曲三角形,因?yàn)槿?/p>

    2024年02月09日
    瀏覽(30)
  • C語(yǔ)言程序設(shè)計(jì):輸入一個(gè)三角形的三條邊長(zhǎng),求出三角形的面積。

    C語(yǔ)言程序設(shè)計(jì):輸入一個(gè)三角形的三條邊長(zhǎng),求出三角形的面積。

    已知三角形的三邊長(zhǎng)a,b,c,則該三角形的面積公式為: ? ? ? ? ? area= ?其中s = (a+b+c)/2

    2024年02月06日
    瀏覽(30)
  • python代碼實(shí)現(xiàn)判斷三角形類(lèi)型,使用pytest進(jìn)行代碼測(cè)試,生成allure測(cè)試報(bào)告

    python代碼實(shí)現(xiàn)判斷三角形類(lèi)型,使用pytest進(jìn)行代碼測(cè)試,生成allure測(cè)試報(bào)告

    一、python代碼判斷三角形類(lèi)型 寫(xiě)代碼之前首先我們要知道滿足三角形的條件: 前提條件:三角形邊長(zhǎng)都為大于0的數(shù)字 構(gòu)成三角形:兩邊之和大于第三邊 即 a+b c? and a+cb and? b+ca? ?(此三個(gè)條件需要同時(shí)滿足) 滿足構(gòu)成三角形之后,要考慮構(gòu)成三角形的類(lèi)型: 三角形分為:

    2024年02月05日
    瀏覽(26)
  • 如何用css畫(huà)一個(gè)三角形?

    要使用CSS顯示一個(gè)三角形,你可以利用元素的邊框?qū)傩院统叽缯{(diào)整來(lái)實(shí)現(xiàn)。下面是一種常用的方法: HTML: CSS: 在上面的示例中,我們創(chuàng)建了一個(gè)帶有類(lèi)名 .triangle 的 div 元素。通過(guò)設(shè)置寬度和高度為0,我們創(chuàng)建了一個(gè)沒(méi)有實(shí)際內(nèi)容的空元素。然后,通過(guò)設(shè)置邊框?qū)傩?,我們?/p>

    2024年02月12日
    瀏覽(21)
  • OpenGL實(shí)現(xiàn)第一個(gè)窗口-三角形

    OpenGL實(shí)現(xiàn)第一個(gè)窗口-三角形

    1.簡(jiǎn)介 此代碼是基于Qt+OpenGL實(shí)現(xiàn)的,但是大部分的代碼是OpenGL,Qt封裝了一些類(lèi),方便使用。 2.準(zhǔn)備工作 QOpenGLWidget 提供了三個(gè)便捷的虛函數(shù),可以重寫(xiě),用來(lái)重寫(xiě)實(shí)現(xiàn)典型的OpenGL任務(wù)。 不需要GLFW。 paintGL:渲染OpenGL場(chǎng)景。widget需要更新時(shí)調(diào)用。 resizeGL:設(shè)置OpenGL視口、投影

    2024年02月08日
    瀏覽(25)
  • PCL 計(jì)算一個(gè)平面與一個(gè)三角形的交線

    這里實(shí)現(xiàn)一個(gè)很有趣的功能,就是獲取一個(gè)平面與一個(gè)三角形的交線,具體的思路很簡(jiǎn)單,就是借助之前的博客中的思路:Matlab 計(jì)算一個(gè)平面與一條線段的交點(diǎn),我們只需要遍歷三角形中的所有邊即可獲取我們想要的交線,這里是PCL版本。

    2024年02月06日
    瀏覽(28)
  • Android GlSurfaceView 入門(mén)教程 : 繪制一個(gè)三角形

    Android GlSurfaceView 入門(mén)教程 : 繪制一個(gè)三角形

    GlSurfaceView 是 Android 中的一個(gè)類(lèi),繼承自 SurfaceView ,是用于顯示 OpenGL ES 圖形渲染的一個(gè) View 。 OpenGL ES 是一種跨平臺(tái)的圖形 API ,用于渲染 2D 和 3D 圖形,也可以將相機(jī)的畫(huà)面顯示到 GlSurfaceView 上,從而實(shí)現(xiàn)濾鏡的效果。 GlSurfaceView 提供了一個(gè)可以在 Android 應(yīng)用程序中繪制

    2024年02月13日
    瀏覽(25)
  • css實(shí)現(xiàn)卡片的左上角有一個(gè)三角形的遮蓋效果

    css實(shí)現(xiàn)卡片的左上角有一個(gè)三角形的遮蓋效果

    需求: 卡片的左上角有一個(gè)綠色的三角形標(biāo)簽,用來(lái)區(qū)分狀態(tài) 實(shí)現(xiàn):

    2024年02月14日
    瀏覽(91)
  • css基礎(chǔ)知識(shí)十八:CSS如何畫(huà)一個(gè)三角形?原理是什么?

    css基礎(chǔ)知識(shí)十八:CSS如何畫(huà)一個(gè)三角形?原理是什么?

    一、前言 在前端開(kāi)發(fā)的時(shí)候,我們有時(shí)候會(huì)需要用到一個(gè)三角形的形狀,比如地址選擇或者播放器里面播放按鈕 通常情況下,我們會(huì)使用圖片或者svg去完成三角形效果圖,但如果單純使用css如何完成一個(gè)三角形呢? 實(shí)現(xiàn)過(guò)程似乎也并不困難,通過(guò)邊框就可完成 二、實(shí)現(xiàn)過(guò)程

    2024年02月13日
    瀏覽(23)
  • 用python畫(huà)一個(gè)五角星的代碼,用python畫(huà)星號(hào)三角形

    用python畫(huà)一個(gè)五角星的代碼,用python畫(huà)星號(hào)三角形

    大家好,小編來(lái)為大家解答以下問(wèn)題,用python畫(huà)一個(gè)五角星的代碼,用python畫(huà)星號(hào)三角形,今天讓我們一起來(lái)看看吧! 大家好,小編為大家解答python編寫(xiě)一個(gè)打地鼠的游戲程序的問(wèn)題。很多人還不知道python編寫(xiě)一個(gè)打地鼠的游戲代碼,現(xiàn)在讓我們一起來(lái)看看吧! 如果你沒(méi)有

    2024年03月24日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包