Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • lucas.philippe.etu/philippe-iihm
1 result
Show changes
Commits on Source (4)
from PyQt5.QtGui import QColor
class BubbleCursor:
defaultCol=QColor("green")
defaultCol=QColor("blue")
def __init__(self, targets):
self.x = 0
......@@ -9,30 +9,26 @@ class BubbleCursor:
self.size = 50
self.targets = targets
self.closest = None
def paint(self, painter):
painter.setBrush(self.defaultCol)
painter.drawEllipse(self.x - self.size, self.y - self.size, self.size * 2, self.size * 2)
def move(self, moveX, moveY):
self.x = moveX
self.y = moveY
self.closest = None
minDistance = float('inf')
painter.drawEllipse(int(self.x - self.size), int(self.y - self.size), int(self.size * 2), int(self.size * 2))
for target in self.targets:
target.highlighted = False
def move(self, x, y):
self.x = x
self.y = y
min_distance = float("inf") # variable valeur infini pour démarrer la recherche de min
previous_closest = self.closest
for target in self.targets:
distance = self.distanceToTarget(target)
if distance < minDistance:
minDistance = distance
distance = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5 # cf. Theoreme de Pythagore
distance = distance - target.size/2 # Prendre la distance avec le contour du cercle et pas le centre
if distance < min_distance:
min_distance = distance
self.closest = target
self.size = min_distance
if self.closest is not None:
if previous_closest != self.closest:
if previous_closest:
previous_closest.highlighted = False
self.closest.highlighted = True
self.size = minDistance - self.closest.size / 2
def distanceToTarget(self, target):
distanceCentre = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5
return abs(distanceCentre - target.size / 2)
import csv
import csv, random, time
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QWidget
from Target import Target
......@@ -11,6 +11,8 @@ class BubbleWidget(QWidget):
self.loadTargets()
self.cursor = BubbleCursor(self.targets)
self.setMouseTracking(True)
self.start_time = None
self.selectRandomTarget()
def loadTargets(self):
with open('src_tp_bubble.csv', newline='') as csvfile:
......@@ -21,13 +23,27 @@ class BubbleWidget(QWidget):
self.targets.append(Target(x,y,size))
def paintEvent(self, event):
print("paintEvent appelé")
painter = QPainter(self)
self.cursor.paint(painter)
for target in self.targets:
target.paint(painter)
self.cursor.paint(painter)
def mouseMoveEvent(self, event):
print("mouseMoveEvent appelé")
self.cursor.move(event.x(), event.y())
self.update()
def selectRandomTarget(self):
if self.start_time == None:
self.start_time = time.time()
target = random.choice(self.targets)
target.toSelect = True
self.update()
def printTime(self):
print((time.time() - self.start_time)*1000)
self.start_time = None
def mousePressEvent(self, event):
if self.cursor.closest.click_cible():
self.printTime()
self.selectRandomTarget()
\ No newline at end of file
......@@ -7,11 +7,8 @@ def main():
app = QApplication(sys.argv)
main_window = QMainWindow()
main_window.resize(1024, 800)
bubble_widget = BubbleWidget()
main_window.setCentralWidget(bubble_widget)
main_window.show()
sys.exit(app.exec_())
......
from PyQt5.QtWidgets import QApplication, QMainWindow
from NormalWidget import NormalWidget
def main():
app = QApplication([])
window = QMainWindow()
window.resize(1024, 800)
normalWidget = NormalWidget()
window.setCentralWidget(normalWidget)
window.show()
app.exec_()
if __name__ == "__main__":
main()
from PyQt5.QtWidgets import QApplication, QMainWindow
from RopeWidget import RopeWidget
def main():
app = QApplication([])
window = QMainWindow()
window.resize(1024, 800)
bubble_widget = RopeWidget()
window.setCentralWidget(bubble_widget)
window.show()
app.exec_()
if __name__ == "__main__":
main()
from PyQt5.QtGui import QColor
class NormalCursor:
defaultCol=QColor("blue")
def __init__(self, targets):
self.x = 0
self.y = 0
self.targets = targets
self.closest = None
def move(self, x, y):
self.x = x
self.y = y
previous_closest = self.closest
for target in self.targets:
distance = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5 # cf. Theoreme de Pythagore
if distance < target.size/2:
self.closest = target
self.closest.highlighted = True
if previous_closest is not None:
distance = ((self.x - previous_closest.x) ** 2 + (self.y - previous_closest.y) ** 2) ** 0.5 # cf. Theoreme de Pythagore
if distance > previous_closest.size / 2:
previous_closest.highlighted = False
\ No newline at end of file
import csv, random, time
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QWidget
from Target import Target
from TP1.NormalCursor import NormalCursor
class NormalWidget(QWidget):
def __init__(self):
super().__init__()
self.targets = []
self.loadTargets()
self.cursor = NormalCursor(self.targets)
self.setMouseTracking(True)
self.start_time = None
self.selectRandomTarget()
def loadTargets(self):
with open('src_tp_bubble.csv', newline='') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
if len(row) >= 3:
x, y, size = map(int, row[:3])
self.targets.append(Target(x,y,size))
def paintEvent(self, event):
painter = QPainter(self)
for target in self.targets:
target.paint(painter)
def mouseMoveEvent(self, event):
self.cursor.move(event.x(), event.y())
self.update()
def selectRandomTarget(self):
if self.start_time == None:
self.start_time = time.time()
target = random.choice(self.targets)
target.toSelect = True
self.update()
def printTime(self):
print((time.time() - self.start_time)*1000)
self.start_time = None
def mousePressEvent(self, event):
if self.cursor.closest.click_cible():
self.printTime()
self.selectRandomTarget()
from BubbleCursor import BubbleCursor
class RopeCursor(BubbleCursor):
def paint(self, painter):
if self.closest is not None:
painter.setBrush(self.defaultCol)
painter.drawLine(self.x, self.y, self.closest.x, self.closest.y)
import csv, random, time
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QWidget
from Target import Target
from RopeCursor import RopeCursor
class RopeWidget(QWidget):
def __init__(self):
super().__init__()
self.targets = []
self.loadTargets()
self.cursor = RopeCursor(self.targets)
self.setMouseTracking(True)
self.start_time = None
self.selectRandomTarget()
def loadTargets(self):
with open('src_tp_bubble.csv', newline='') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
if len(row) >= 3:
x, y, size = map(int, row[:3])
self.targets.append(Target(x,y,size))
def paintEvent(self, event):
painter = QPainter(self)
self.cursor.paint(painter)
for target in self.targets:
target.paint(painter)
def mouseMoveEvent(self, event):
self.cursor.move(event.x(), event.y())
self.update()
def selectRandomTarget(self):
if self.start_time == None:
self.start_time = time.time()
target = random.choice(self.targets)
target.toSelect = True
self.update()
def printTime(self):
print((time.time() - self.start_time)*1000)
self.start_time = None
def mousePressEvent(self, event):
if self.cursor.closest.click_cible():
self.printTime()
self.selectRandomTarget()
from PyQt5.QtGui import QColor
from PyQt5.QtGui import QColor, QBrush, QPen
class Target:
defaultCol = QColor("green")
......@@ -13,10 +14,20 @@ class Target:
self.highlighted = False
def paint(self, painter):
color = self.defaultCol
if self.toSelect:
painter.setBrush(self.toSelectCol)
color = self.toSelectCol
elif self.highlighted:
painter.setBrush(self.highlightCol)
else:
painter.setBrush(self.defaultCol)
painter.drawEllipse(self.x - self.size / 2, self.y - self.size / 2, self.size, self.size)
\ No newline at end of file
color = self.highlightCol
painter.setBrush(QBrush(color))
painter.setPen(QPen(color))
painter.drawEllipse(int(self.x - self.size / 2), int(self.y - self.size / 2), int(self.size), int(self.size))
def click_cible(self):
if self.toSelect:
self.toSelect = False
return True
return False