Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 16, 2014 22:06:50

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

координаты точек на окружности

помогите пожалуйста - запутался

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?
как правильно выглядить формула вычисляющая точки окружности?

Отредактировано vrabey (Фев. 16, 2014 22:09:46)

Офлайн

#2 Фев. 16, 2014 22:58:32

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

координаты точек на окружности

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_()
углы не считал

Отредактировано Shaman (Фев. 16, 2014 22:58:54)

Офлайн

#3 Фев. 16, 2014 23:10:16

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

координаты точек на окружности

Если переделать ваш код:

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_()
Но это не точно, если хочешь работать с графикой, учи аналитическую геометрию!



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Фев. 16, 2014 23:42:46

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

координаты точек на окружности

terabayt
Но это не точно
не точно. та да. надо учить. спасибо

Отредактировано vrabey (Фев. 17, 2014 00:18:31)

Офлайн

#5 Фев. 16, 2014 23:45:13

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

координаты точек на окружности

Shaman
спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version