Найти - Пользователи
Полная версия: координаты точек на окружности
Начало » Python для новичков » координаты точек на окружности
1
vrabey
помогите пожалуйста - запутался
import sys
from PyQt4 import QtGui, QtCore
import math
def pos(angle, size, elipsSize):
    u""" точки на окружности """
    x0 = y0 = (size / 2) - (elipsSize / 2)
    rad = size / 2 - 120
    x = x0 + (math.cos(angle) * rad)
    y = y0 + (math.sin(angle) * rad)
    return (x, y)
class Points(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.size = 700
        self.resize(self.size, self.size)
        self.ellipseSize = 50
    def paintEvent(self, event):
        paint = QtGui.QPainter()
        paint.begin(self)
        paint.setPen(QtCore.Qt.red)
        
        for angle in range (0, 6):       
            y, x = pos(angle, self.size, self.ellipseSize)
            paint.drawEllipse(x, y,
                              self.ellipseSize, self.ellipseSize)
        paint.end()
app = QtGui.QApplication(sys.argv)
dt = Points()
dt.show()
app.exec_()

этот код рисует 6 елипсов по окружности
угол соответственно 60
как нарисовать 9 елипсов с углом в 40?
как правильно выглядить формула вычисляющая точки окружности?
Shaman
import sys
from PyQt4 import QtGui, QtCore
import math
_parts = 9
def pos(angle, size, elipsSize):
    x0 = y0 = (size / 2) - (elipsSize / 2)
    rad = size / 2 - 120
    x = x0 + (math.cos(angle) * rad)
    y = y0 + (math.sin(angle) * rad)
    return (x, y)
class Points(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.size = 700
        self.resize(self.size, self.size)
        self.ellipseSize = 50
    def paintEvent(self, event):
        paint = QtGui.QPainter()
        paint.begin(self)
        paint.setPen(QtCore.Qt.red)
        
        for angle in range (0, _parts):       
            y, x = pos(angle * (math.pi + math.pi) / _parts, self.size, self.ellipseSize)
            paint.drawEllipse(x, y,
                              self.ellipseSize, self.ellipseSize)
        paint.end()
app = QtGui.QApplication(sys.argv)
dt = Points()
dt.show()
app.exec_()
углы не считал
terabayt
Если переделать ваш код:
import sys
from PyQt4 import QtGui, QtCore
import math
def pos(angle, size, elipsSize):
    u""" точки на окружности """
    x0 = y0 = (size / 2) - (elipsSize / 2)
    rad = size / 2 - 120
    x = x0 + (math.cos(angle*0.666666666) * rad)
    y = y0 + (math.sin(angle*0.666666666) * rad)
    return (x, y)
class Points(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.size = 700
        self.resize(self.size, self.size)
        self.ellipseSize = 50
    def paintEvent(self, event):
        paint = QtGui.QPainter()
        paint.begin(self)
        paint.setPen(QtCore.Qt.red)
        
        for angle in range (0, 9):       
            y, x = pos(angle, self.size, self.ellipseSize)
            paint.drawEllipse(x, y,
                              self.ellipseSize, self.ellipseSize)
        paint.end()
app = QtGui.QApplication(sys.argv)
dt = Points()
dt.show()
app.exec_()
Но это не точно, если хочешь работать с графикой, учи аналитическую геометрию!
vrabey
terabayt
Но это не точно
не точно. та да. надо учить. спасибо
vrabey
Shaman
спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB