手動一體pos機p1,Python 過三點畫圓做一個路徑動畫

 新聞資訊  |   2023-04-24 09:46  |  投稿人:pos機之家

網上有很多關于手動一體pos機p1,Python 過三點畫圓做一個路徑動畫的知識,也有很多人為大家解答關于手動一體pos機p1的問題,今天pos機之家(www.bangarufamily.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、手動一體pos機p1

手動一體pos機p1

最近做課件的時候,要做一個圓形路徑動畫,就想著給定起點和終點后,再自動計算一個運動幅度,然后畫出圓來,于是就引出三點畫圓的問題。

CSDN 上有篇文章,列出了一個二元二次求解,我能看懂原理,但是代碼有點長。大家懂的,python 代碼一長,意味著效率低。

于是繼續尋尋覓覓,終于在 stackoverflow 上找到了一個高手的答案,他用了復數求解,原理雖然沒搞懂,但是代碼簡單啊,對于一個有經驗的程序員,沒什么是三個按鍵解決不了的。

簡單封裝成一個求圓心和半徑的函數。

def get_circle(p1,p2,p3): '''三點求圓,返回圓心和半徑''' x, y, z = p1[0]+p1[1]*1j, p2[0]+p2[1]*1j, p3[0]+p3[1]*1j w = z-x w /= y-x c = (x-y)*(w-abs(w)**2)/2j/w.imag-x# 看不懂,to-do:復習一下復變函數 return (-c.real,-c.imag),abs(c+x) c,r = get_circle((1,1),(1,2),(3,4))print('({:.2f},{:.2f}),r= {:.2f}'.format(c[0],c[1], r))

順手做了個演示程序,在屏幕中間隨便點一些點,畫出來的效果有點像鳥群,居然還有點好看,閨女吐槽我又用了Matrix 綠,不廢話,上源碼。

# circlepath.pyfrom base import * W,H = 1280,800def get_circle(p1,p2,p3): '''三點求圓,返回圓心和半徑''' x, y, z = p1[0]+p1[1]*1j, p2[0]+p2[1]*1j, p3[0]+p3[1]*1j w = z-x w /= y-x c = (x-y)*(w-abs(w)**2)/2j/w.imag-x return (-c.real,-c.imag),abs(c+x)class CirclePath: def __init__(self,center,r): self.center = Vector2(center) self.r = r self.angle = 0 self.speed = 2 def draw(self,canvas): self.angle += self.speed pos = self.center + Vector2(self.r,0).rotate(self.angle) pygame.draw.circle(canvas, (0,200,0),pos, 3)points = []circles = []show_points = True # 顯示點def setup(): size(W,H)def draw(): global show_points for event in ctx.events: if event.type == pygame.KEYDOWN: if event.key == K_SPACE: show_points = not show_points if event.type == pygame.MOUSEBUTTONDOWN: points.append(event.pos) if len(points) >= 3: c,r = get_circle(points[-3],points[-2],points[-1]) circles.append(CirclePath(c,r)) ctx.screen.fill((0,0,0,100)) if show_points: for p in points: pygame.draw.circle(ctx.screen, (100,100,0),p, 2) for circle in circles: circle.draw(ctx.screen)run()

(按空格鍵,不顯示坐標點,會更好看一些。)

base.py 是我自己封裝了一下 pygame ,主要是為了仿 processing 的調用方式。

# base.pyimport pygamefrom pygame.locals import *from pygame.math import Vector2import sys,random,math,oswidth="360px",height="auto" />

第三方庫只用到了 pygame,如果您看到這里了,不嫌麻煩就給點個贊吧,鼓勵一下我。

以上就是關于手動一體pos機p1,Python 過三點畫圓做一個路徑動畫的知識,后面我們會繼續為大家整理關于手動一體pos機p1的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.bangarufamily.com/news/32702.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。