Не получается нарисовать квадрат из кординат линий

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Не получается нарисовать квадрат из кординат линий

Re: Не получается нарисовать квадрат из кординат линий

Post by flud » 30 Mar 2023, 11:04

упростил формат обычный csv

Code: Select all

1,-10,0,0,-25,1
2,0,-25,7,0,1
3,5,-10,-6,-10,1
4,5,-25,14,0,2
5,11,-13,23,-13,2
6,18,-24,29,-2,2
7,22,-24,34,0,4
8,29,-12,32,-26,4
9,32,-13,42,-4,4
10,-9,-33,38,-54,1
11,19,-35,62,-47,1
12,43,-17,72,-28,1
13,49,15,83,-11,1
14,-1,15,35,9,1
15,-16,-56,-16,40,4
16,-16,40,88,40,4
17,88,40,88,-64,4
18,88,-64,-16,-64,4
19,-16,-72,96,-72,3
20,96,-72,96,48,3
21,96,48,-24,48,3
22,-24,48,-24,-56,3
23,-16,-80,104,-80,2
24,104,-80,104,56,2
25,104,56,-32,56,2
26,-32,56,-32,-56,2
RobotMouse_csHhyc5d6h.png
RobotMouse_csHhyc5d6h.png (4.57 KiB) Viewed 894 times

Re: Не получается нарисовать квадрат из кординат линий

Post by flud » 30 Mar 2023, 05:08

а у меня не только прямугольники, можно по пикселям рисовать, просто это всегда линия.

Вот другая картинка
Spoiler

Code: Select all

1:(-8, -24)(-8, 0):4
2:(0, -16)(-8, -16):4
3:(0, -16)(0, 0):4
4:(-24, 0)(-24, -16):4
5:(-24, -16)(-16, -24):4
6:(-16, -24)(-16, 0):4
7:(-24, -8)(-16, -8):4
8:(8, -24)(8, 0):4
9:(8, -8)(16, -24):4
10:(8, -8)(16, 0):4
11:(-32, -16)(-16, -32):2
12:(-16, -32)(0, -32):2
13:(0, -32)(1, -21):2
14:(1, -21)(4, -21):2
15:(4, -21)(4, -32):2
16:(4, -32)(8, -32):2
17:(8, -32)(32, -32):2
18:(32, -32)(16, -8):2
19:(16, -8)(24, 0):2
20:(24, 0)(24, 8):2
21:(24, 8)(-32, 8):2
22:(-32, 8)(-32, -16):2
23:(32, -32)(64, -32):3
24:(24, -16)(64, -16):3
25:(24, 0)(64, 0):3
26:(24, 8)(64, 8):3
27:(-48, -24)(64, 8):1
28:(-24, -48)(64, 8):1
29:(-64, -32)(-62, -32):1
30:(-45, -38)(-43, -38):1
31:(-23, -46)(-21, -46):1
32:(0, -48)(2, -48):1
33:(26, -39)(28, -39):1
34:(38, -55)(40, -55):1
35:(59, -43)(61, -43):1
36:(67, -22)(69, -22):1
37:(43, -9)(45, -9):1
38:(32, 25)(34, 25):1
39:(-10, 20)(-8, 20):1
40:(-56, 5)(-54, 5):1
41:(-49, -21)(-47, -21):1
42:(-31, -66)(-29, -66):1
43:(11, -57)(13, -57):1
44:(82, 6)(84, 6):1
45:(58, 28)(60, 28):1
46:(29, 46)(31, 46):1
47:(-4, 41)(-2, 41):1
48:(-38, 31)(-36, 31):1

Re: Не получается нарисовать квадрат из кординат линий

Post by serzh82saratov » 30 Mar 2023, 02:02

для построения прямоугольника если он не под углом, достаточно двух точек
1:(-7, -9)(-8, -8):1
линии вычислить не так уж трудно

Re: Не получается нарисовать квадрат из кординат линий

Post by flud » 29 Mar 2023, 09:50

Как лучше реализовать задумку?

Code: Select all

1:(-7, -9)(8, -8):1
2:(8, -8)(8, 8):1
3:(8, 8)(-8, 8):1
4:(-8, 8)(-8, -8):1
5:(16, 8)(16, -24):2
6:(16, -24)(48, -24):2
7:(48, -24)(48, 8):2
8:(48, 8)(16, 8):2
9:(56, 8)(56, -56):3
10:(56, -56)(120, -56):3
11:(120, -56)(120, 8):3
12:(120, 8)(56, 8):3
есть данный текстовый файл, первый символ это номер линий, векторы в : : это линия относительно центра, последняя цифра означает некий цвет кисти
Результат тоже выглядить так, как видно первый белый куб находиться прямо по центру
Godot.png
Godot.png (3.52 KiB) Viewed 934 times

Re: Не получается нарисовать квадрат из кординат линий

Post by mcl » 16 Mar 2023, 19:27

flud wrote: скрипт рисует какую то дичь
Координаты у вас сохраняются относительно центра, а MouseClickDrag работает относительно текущего положения мыши.
После каждого MouseClickDrag положение мыши меняется, притом дважды: сперва – после сдвига (X1/Y1), потом – после отрисовки (X2/X2).

Code: Select all

#SingleInstance Force
CoordMode "Mouse", "Screen"

*ESC::ExitApp
*f2::Reload
f1::
ArrayCountfix = -1
ArrayCount := 4
line_0 := [-8, -8,  16,   0]  ; Сдвиг на пол-квадрата только в первом массиве. Линия горизонтальная (Y2=0)
line_1 := [ 0,  0,   0,  16]  ; Сдвига нет, продолжаем от места, где мышь остановилась. Линия вертикальная (X2=0)
line_2 := [ 0,  0, -16,   0]
line_3 := [ 0,  0,   0, -16]

Loop %ArrayCount%
	{
		ArrayCountfix += 1
		MouseClickDrag L, line_%ArrayCountfix%[1], line_%ArrayCountfix%[2], line_%ArrayCountfix%[3], line_%ArrayCountfix%[4], 2, R		
	}
Return

Re: Не получается нарисовать квадрат из кординат линий

Post by flud » 16 Mar 2023, 00:42

C эскпортом всё в порядке, что то не так с Relative у MouseClickDrag
Изменил чуток код и почти отлично стало (почти, потому что всё как в зеркале перевёрнуто :) )

Code: Select all

#SingleInstance Force
CoordMode "Mouse", "Screen"
#include arrays.ahk

*ESC::ExitApp
*f2::Reload

f1::
{	
	local count := ArrayCount
	MouseGetPos &xpos, &ypos
	while (0 < count) {
		count--
		line := line_%count%
		MouseClickDrag "Left", xpos - line[1], ypos - line[2], xpos - line[3], ypos - line[4], 0
	}
}
Return

Re: Не получается нарисовать квадрат из кординат линий

Post by flud » 16 Mar 2023, 00:20

Видимо что то с моим экспортером, у меня поле 800х800, код проходит по всем линиями и сохраняет положение точек линий относительно центра
mspaint_IR4Edusw11.png
mspaint_IR4Edusw11.png (124.81 KiB) Viewed 1100 times
вот как он экспортирует простой квадрат, без минусовых значений.

Code: Select all

ArrayCount := 4
line_0 := [0, 0, 16, 0]
line_1 := [16, 0, 16, 16]
line_2 := [16, 16, 0, 16]
line_3 := [0, 16, 0, 0]
чуток покрасил код

Code: Select all

#SingleInstance Force
CoordMode "Mouse", "Screen"
#include arrays.ahk

*ESC::ExitApp
*f2::Reload

f1::
{	
	local count := ArrayCount
	while (0 < count) {
		count--
		line := line_%count%
		MouseClickDrag "Left", line[1], line[2], line[3], line[4], 0, "R"
	}
}
Return

Re: Не получается нарисовать квадрат из кординат линий

Post by garry » 15 Mar 2023, 16:17

Code: Select all

#Warn
#Requires AutoHotkey v1.1
#SingleInstance Force
CoordMode,Pixel,screen
Coordmode,mouse,screen
Run, mspaint.exe
WinWaitActive, ahk_class MSPaintApp,, 2
if ErrorLevel
    return
;---
$F9::
ArrayCountfix = -1
ArrayCount := 4

;--- drag only квадрат -----------------------
;/*
;---------------------
line_0:=[0,0,100,0]
line_1:=[0,0,0,100]
line_2:=[0,0,-100,0]
line_3:=[0,0,0,-100]
;---------------------
;*/

/*
;-- only move --------
;---------------------
line_0:=[100,0,0,0]
line_1:=[0,100,0,0]
line_2:=[-100,0,0,0]
line_3:=[0,-100,0,0]
;-----------------------
*/

Loop %ArrayCount%
	{
	ArrayCountfix ++
	MouseClickDrag L, line_%ArrayCountfix%[1], line_%ArrayCountfix%[2], line_%ArrayCountfix%[3], line_%ArrayCountfix%[4],4,R
    sleep,300  ;- for test		
	}
Return
;-----------------------------------
*ESC::ExitApp
*f2::Reload
;===================================

Не получается нарисовать квадрат из кординат линий

Post by flud » 15 Mar 2023, 13:20

Code: Select all

#SingleInstance Force
CoordMode "Mouse", "Screen"

*ESC::ExitApp
*f2::Reload
f1::
ArrayCountfix = -1
ArrayCount := 4
line_0 := [-8, -8, 8, -8]
line_1 := [8, -8, 8, 8]
line_2 := [8, 8, -8, 8]
line_3 := [-8, 8, -8, -8]

Loop %ArrayCount%
	{
		ArrayCountfix += 1
		MouseClickDrag L, line_%ArrayCountfix%[1], line_%ArrayCountfix%[2], line_%ArrayCountfix%[3], line_%ArrayCountfix%[4], 2, R		
	}
Return

скрипт рисует какую то дичь
notepad++_MbDft2ZOVj.png
notepad++_MbDft2ZOVj.png (23.63 KiB) Viewed 1143 times

Top