From 24f569ebc1202a599a6a79e20cfd7b360bf6343a Mon Sep 17 00:00:00 2001 From: bklronin Date: Sat, 11 May 2024 22:36:06 +0200 Subject: [PATCH] 2d drawing test --- modules/gl_widget.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/modules/gl_widget.py b/modules/gl_widget.py index 79b0027..4b702a0 100644 --- a/modules/gl_widget.py +++ b/modules/gl_widget.py @@ -15,6 +15,12 @@ class OpenGLWidget(QOpenGLWidget): self.yRot = 0 self.zoom = -10.0 self.sketch = [] + self.gl_width = self.width() / 1000 + self.gl_height = self.height() / 1000 + + print(self.gl_height) + print(self.gl_width) + def map_value_to_range(self, value, value_min: int = 0, value_max: int= 1920, range_min=-1, range_max=1): """ Maps a value from one range to another. @@ -56,6 +62,8 @@ class OpenGLWidget(QOpenGLWidget): glMatrixMode(GL_PROJECTION) glLoadIdentity() aspect = width / float(height) + self.gl_width = self.width() / 1000 + self.gl_height = self.height() / 1000 gluPerspective(45.0, aspect, 1.0, 100.0) glMatrixMode(GL_MODELVIEW) @@ -82,16 +90,16 @@ class OpenGLWidget(QOpenGLWidget): # Draw vertical lines glBegin(GL_LINES) for x in range(0, self.width(), 20): - x_ndc = self.map_value_to_range(x, 0, value_max=self.width(), range_min=-2, range_max=2) - glVertex2f(x_ndc, -1) # Start from y = -1 - glVertex2f(x_ndc, 1) # End at y = 1 + x_ndc = self.map_value_to_range(x, 0, value_max=self.width(), range_min=-self.gl_width, range_max=self.gl_width) + glVertex2f(x_ndc, -self.gl_height) # Start from y = -1 + glVertex2f(x_ndc, self.gl_height) # End at y = 1 # Draw horizontal lines for y in range(0, self.height(), 20): - y_ndc = self.map_value_to_range(y, 0, value_max=self.height(),range_min=-1, range_max=1) - glVertex2f(-2, y_ndc) # Start from x = -1 - glVertex2f(2, y_ndc) # End at x = 1 + y_ndc = self.map_value_to_range(y, 0, value_max=self.height(), range_min=-self.gl_height, range_max=self.gl_height) + glVertex2f(-self.gl_width, y_ndc) # Start from x = -1 + glVertex2f(self.gl_width, y_ndc) # End at x = 1 glEnd() @@ -116,8 +124,6 @@ class OpenGLWidget(QOpenGLWidget): glVertex2f(x2, y2) glEnd() - - def draw_lines_between_points(self, points): glBegin(GL_LINES) glColor3f(1.0, 1.0, 1.0) # Set line color to white @@ -148,10 +154,10 @@ class OpenGLWidget(QOpenGLWidget): mouse_pos = event.pos() # Map mouse position to normalized device coordinates - normalized_x = self.map_value_to_range(mouse_pos.x(), 0, value_max=self.width(),range_min=-2, range_max=2) - normalized_y = self.map_value_to_range(mouse_pos.y(), 0, value_max=self.height(),range_min=-1, range_max=1) + normalized_x = self.map_value_to_range(mouse_pos.x(), 0, value_max=self.width(),range_min=-self.gl_width, range_max=self.gl_width) + normalized_y = self.map_value_to_range(mouse_pos.y(), 0, value_max=self.height(),range_min=-self.gl_height, range_max=self.gl_height) - self.startPos = [normalized_x, -normalized_y] + self.startPos = [normalized_x * -self.zoom, -normalized_y * -self.zoom] # Now you have the mouse position in normalized coordinates print("Right mouse button pressed - Mouse position (normalized):", normalized_x, normalized_y) @@ -160,10 +166,10 @@ class OpenGLWidget(QOpenGLWidget): mouse_pos = event.pos() # Map mouse position to normalized device coordinates - normalized_x = self.map_value_to_range(mouse_pos.x(), 0, value_max=self.width(), range_min=-2, range_max=2) - normalized_y = self.map_value_to_range(mouse_pos.y(), 0, value_max=self.height(), range_min=-1, range_max=1) + normalized_x = self.map_value_to_range(mouse_pos.x(), 0, value_max=self.width(), range_min=-self.gl_width, range_max=self.gl_width) + normalized_y = self.map_value_to_range(mouse_pos.y(), 0, value_max=self.height(), range_min=-self.gl_height, range_max=self.gl_height) - self.endPos = [normalized_x, -normalized_y] + self.endPos = [normalized_x * -self.zoom, -normalized_y * -self.zoom] self.add_to_sketch(self.startPos) self.add_to_sketch(self.endPos)