Уведомления

Группа в Telegram: @pythonsu

#1 Март 20, 2012 22:00:53

br3d
От:
Зарегистрирован: 2011-05-02
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите куда копать

Добрый вечер/утро/день уважаемые!
У меня дурная задача, даже не знаю с какой стороны подойти, вообщем надо сделать программу,
которая выводит поле, на которое пользователь щелкает и ставит на нем точки в произвольном месте этого поля,
после чего нужно локализовать окружностью точки по плотности…,

Собственно что не понятно !
КАК можно реализовать тыканье мышью в поле, что бы появлялись точки(ну и соответственно их координаты как то фиксировались)
не кидайтесь в меня ничем( просто до этого писал только под консоль…



Офлайн

#2 Март 21, 2012 00:05:57

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

Подскажите куда копать

Собственно вам надо взять любую графическую библиотеку tkinter, wxpython, pyqt, …
И с помощью её средств решать вашу задачу. Я из выше названых плотно работал только с pyqt, могу сказать что там работать с графикой достаточно просто.



Офлайн

#3 Март 21, 2012 04:47:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Подскажите куда копать

Можно к списку добавить чтото из игрового мира - pygame например…
Из того что я знаю самый простой способ использовать matplotlib

можно слегка переделать пример http://matplotlib.sourceforge.net/users/event_handling.html:

from matplotlib import pyplot as plt

class LineBuilder:
def __init__(self, line):
self.line = line
self.xs = list(line.get_xdata())
self.ys = list(line.get_ydata())
self.cid = line.figure.canvas.mpl_connect('button_press_event', self)

def __call__(self, event):
print 'click', event
if event.inaxes!=self.line.axes: return
self.xs.append(event.xdata)
self.ys.append(event.ydata)
self.line.set_data(self.xs, self.ys)
self.line.figure.canvas.draw()

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('click to build line segments')
line, = ax.plot([0], [0],"o") # empty line
linebuilder = LineBuilder(line)

plt.show()
По поводу - окружности. Надо более четко поставить задачу. Например:
найти такие r_0,R что функция f(r_i)=\sum_{i=1}^n g(r_i)->min
def g(r,r0,R):
x,y=r-r0
return x**2+y**2-R**2
получается задача нелинейной оптимизации см. numpy,scipy. Там есть готовые модули для решения таких задачек. Почти наверняка потребуется неплохое начальное приближение.



Отредактировано (Март 21, 2012 04:57:55)

Офлайн

#4 Март 21, 2012 06:21:23

br3d
От:
Зарегистрирован: 2011-05-02
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите куда копать

mks
спасибо попробуем! ,
doza_and - расчет построения окружностей второе дело, но тоже придется делать, так что спасибо и вам =)
Я именно не знал какие либы юзать так как даже не мог правильно, коротко сформулировать запрос для поисковика, …(((



Офлайн

#5 Март 21, 2012 10:17:23

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

Подскажите куда копать

Если остановитесь на pyqt, то как рисовать круги и точки можно почитать тут - http://doc.qt.nokia.com/4.7-snapshot/graphicsview.html



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version