![]() |
Da ne otvaram novu temu, par pitanja... - Printable Version +- DIY Electronic projects (https://forum.yu3ma.net) +-- Forum: Sve ostalo - Everything else (https://forum.yu3ma.net/forumdisplay.php?fid=9) +--- Forum: Sve i svašta (https://forum.yu3ma.net/forumdisplay.php?fid=41) +--- Thread: Da ne otvaram novu temu, par pitanja... (/showthread.php?tid=264) Pages:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
RE: Da ne otvaram novu temu, par pitanja... - Dragan100 - 05-03-2024 (05-03-2024, 07:54 PM)misamilanovic Wrote: Evo ti rešenje ako sam ja uopšte dobro razumeo šta se traži, i ako nisam pogrešio, ali proveravao sam na nekoliko primera. Ako je stranica većeg kvadrata a, manjeg a', poluprečnik spoljnog kruga r i poluprečnik unutrašnjeg kruga r' onda je r' = (2r - a + a') / 2. Ako počneš da dobijaš negativne rezultate za r', to znači da mu centar pada između dva kvadrata. Npr. upravo ono što si zadao (a = 100, a' = 90, r = 2,5) daje negativan rezultat. Sve dok je taj medjuprostor {(a - a')/2} > r, onda se za r' dobiva taj negativan rezultat, što zapravo znači da bi trebali "dodat" na unutrašnji kvadrat neki imaginarni r, jer u samom uglu imamo veče rastojanje, pa zapravo netreba uopšte obarati unutrašnje ivice. RE: Da ne otvaram novu temu, par pitanja... - ddanijel - 05-03-2024 U cemu crtas? Pitam jer u adobe ilustratoru postoji funkcija za to, a verujem i u gomili drugih vector crtackih app. RE: Da ne otvaram novu temu, par pitanja... - savan - 05-03-2024 U SolidWorks crtam, u njemu to resavam jednostavno sa par dodatnih linija kao na slici nije to problem nego cisto me zanima matematicko resenje : ) Korisno je kada bi se crtalo preko programskog jezika bez upotrebe neke biblioteke pa pisalo na ekran Edit: hvala misamilovanovic! Razotricu sutra prakticno u SolidWorks dali ce rezultat biti ok na nekom primeru sto budem nacrtao RE: Da ne otvaram novu temu, par pitanja... - HomeMadeAudioProject - 05-04-2024 ne znam jesam li dobro shvatio problem,ali zar nije manji radijus zapravo veliki umanjen za taj međuprostor? (oba radijusa počinju iz iste tačke ) kako drugačije dobiti jednako rastojanje između ta dva tela? RE: Da ne otvaram novu temu, par pitanja... - savan - 05-04-2024 Nisu isti radijusi na spoljnom i na unutrasnjem kvadratu u tome je caka, to sam otkrio tek kada sam crtao na onoj diy kamerici kada sam pravio zid kutije da radijsi nisu isti, ako je na primer spoljni radisus lupicu 5mm a debljina zida se zeli 2mm, unutrasnji radijus nije 5mm manji je. Stavi shestar iglu na Mt tacku vidices da je manji poluprecnik. I to sad na primer kada se crta u programskom kodu za ispisivanje na ekran i bez upotrebe neke biblioteke onda tu mora matematika da se ukjluci : ) RE: Da ne otvaram novu temu, par pitanja... - savan - 05-04-2024 (05-03-2024, 07:54 PM)misamilanovic Wrote: Evo ti rešenje ako sam ja uopšte dobro razumeo šta se traži, i ako nisam pogrešio, ali proveravao sam na nekoliko primera. Ako je stranica većeg kvadrata a, manjeg a', poluprečnik spoljnog kruga r i poluprečnik unutrašnjeg kruga r' onda je r' = (2r - a + a') / 2. Ako počneš da dobijaš negativne rezultate za r', to znači da mu centar pada između dva kvadrata. Npr. upravo ono što si zadao (a = 100, a' = 90, r = 2,5) daje negativan rezultat. NIje ovo dobra formula tj nije forula za poluprecnik sa Mt tacke. Na primer razdaljinu od centra do Mt tacke moze da se izracuna ako se zna poluprecnik oborene ivice koji je 2.5mm, jednostavno se oduzme od poludijagonale r0 - 2.5mm da se dobije distanca Mt od centra kvadrata, i sa distance Mt poznat je poluprecnik spoljne oborene ivice koji smo fiksirali na 2.5mm. Takodje sada se zna i pozicija Mt tacke. E sad sa pozicije Mt treba izracunati poluprecnik oborene ivice na manjem kvadratu. Mislim da treba da se izracuna poludijagonala manjeg kvardrata pa da se oduzme dijagonala veceg kvadrata i dijagonala manjeg kvadrata i onda tu nesto dodatno saberere-oduzme sa ovom poznatom jedinicom poluprecnika 2.5mm RE: Da ne otvaram novu temu, par pitanja... - savan - 05-04-2024 r0 = ((100 x sqrt(2)) / 2) = 68.2106781187 Mt = r0 - 2.5 = 65.7106781187 e sad ((100 x sqrt(2)) / 2) - ((90 x sqrt(2)) / 2) = 7.07106781187 = medjuprostor dva kvadrata dijagonalno poluprecnik oborene ivice na manjem kvadratu = formula ?? RE: Da ne otvaram novu temu, par pitanja... - savan - 05-04-2024 Evo kako to izgleda u SolidWorks, postavio sam spoljni kvardrat 100x100 a unutrasnji 90x90, oborena spoljna ivica je poluprecnika 9mm, u programu dobijam da je 4mm unutrasnji poluprecnik oborene ivice, kako to izracunati matematicki da se dobije rezultat = 4mm nemam ideju : ) i kad se uklone sve te silne linije viska unutrasnji poluprecnik savrseno prati spoljni poluprecnik i medjuprostor je savrseno jednak svuda unaokolo RE: Da ne otvaram novu temu, par pitanja... - Dragan100 - 05-04-2024 (05-04-2024, 11:48 AM)savan Wrote: r0 = ((100 x sqrt(2)) / 2) = 68.2106781187 medjuprostor dva kvadrata linijski ti je (100-90)/2 = 5 => d poluprečnik oborene ivice vanskog kvadrata odabrao si r => 2,5 Sve dok je r<d, ivicu unutrašnjeg kvadrata netrebaš obarati! Izračunao si sam da je ta dijaginala medjuprostora oko 7,07 što je veče od potrebnog medjuprostora d=5 RE: Da ne otvaram novu temu, par pitanja... - Dragan100 - 05-04-2024 (05-04-2024, 12:30 PM)savan Wrote: Evo kako to izgleda u SolidWorks, postavio sam spoljni kvardrat 100x100 a unutrasnji 90x90, oborena spoljna ivica je poluprecnika 9mm, u programu dobijam da je 4mm unutrasnji poluprecnik oborene ivice, kako to izracunati matematicki da se dobije rezultat = 4mm nemam ideju : ) Pa zar nije: -medjuprostor d=5 -r_van = 9 r_un = r_van - d, a centar imaju zajednički oba r_x RE: Da ne otvaram novu temu, par pitanja... - savan - 05-04-2024 Ne mogu da verujem da je tako jednostavno, bravo Dragane! Ja bi tu ko zna sta delio, mnozio, sabirao, oduzimao i opet nebi izracunao, gledam u totalno pogresnom smeru : ) RE: Da ne otvaram novu temu, par pitanja... - Dragan100 - 05-04-2024 (05-04-2024, 12:48 PM)savan Wrote: Ne mogu da verujem da je tako jednostavno, bravo Dragane! Ja bi tu ko zna sta delio, mnozio, sabirao, oduzimao i opet nebi izracunao, gledam u totalno pogresnom smeru : ) Pa sitnica! Nego, kad bi ti odmah dao tu sliku iz SldWorks-a, rešili bi te davno prije 10+ postova... a tako nas vrtiš u krugu!!! :-) Ja sam bio siguran da ti radi problem taj r_un, kad je medjuprostor d veči od njega: r<d što ti je i @misamilanovic ponudio, i obrazložio taj rezultat negativnog predznaka... RE: Da ne otvaram novu temu, par pitanja... - savan - 05-04-2024 Tesko mi je prvo da objasnim to sto mi se nalazi u glavi, prvo sam sa sobom... pa onda svaka cast onom ko je uspeo da razume sta je pesnik hteo da kaze : ) RE: Da ne otvaram novu temu, par pitanja... - mikikg - 05-04-2024 Pitao sam ChatGTP za te "rounded-corners" jer znam šta je Savan pitao, odnosilo se na iscrtavanje u kompjuterskoj grafici generalno jer ispada da jeste problem i ima nekih specifičnih caka pored osnovne matematike. Maltretirao sam ChatGTP da mi napravi kvadrat sa zaobljenim ivicama i pošto se generalno radi o kompjuterskoj grafici terao sam ga da mi napravi u JavaScrip ali diskretnu implementaciju sa tačkama i linijama, pokušavao sam 15 puta, te ovako, te onako, dva-tri sata sam se mlatio sa njim, davao je neke krivulje umesto "zaobljenja", hteo sam da razbijem i tastaturu i njega koliko je retardirano glup CharGTP, zaglupi se da ne može da podeli dva broja, još ako su sa float-point, ma kakvi, Hewlett Packard Calculator je za njega misaona imenica kada se dodje do matematike gde se GTP zaglupi vrlo lako. Od nekih 15 kombinacija, samo su dve davale tačne rezultate i to samo kada se koristila arcTo() ili arc() funkcija za crtanje ivica i klasične lineTo() funkcjie za linije. I pokušavao sam XY puta da mu kažem da je to super samo da mi sad razradi i da rešenje samih arcTo() i arc() funkcija, 2*Pi/nešto ... i ne može i ne može i ne može ... i "pretio" samu da cu da ga "tužim kod autora da ga isključe" i ajd ponovo i ponovo ... I nije znao da napravi! Kreten ... j*** ChatGTP .... RE: Da ne otvaram novu temu, par pitanja... - mikikg - 05-04-2024 BTW: Stvar je u tome što "arc" ili "deo kružnice" u kompjuterskoj grafici ne može da se definiše ili iscrtati preko jedne funkcije, mora da ima više segmenata tj "vertexa" koji iscrtavaju ustvari linije i duzine tih linija direktno utiču na "finoću" zaobljenja. Zamisli da imaš 0-90*deg polu-kružnicu, može da se predstavi "grubo" sa na primer 10 nekih linija podljenje u koracima od po 9*deg, može još finije sa 100, 1000, sa praktično bezbroj ako radimo u nekom ogromnom vektorskom prostoru pda da se pri nekim velikim zoom i dalje vidi "fino" zaobljenje i tako praktično u krug, što je "finije" to više memorije zauzima i sporije radi (u vektorskoj formi, vertexi). Kada se radi sa fiksnim rezolucijama ekrana i generalno 2D grafikom, radi se ista stvar samo je poznat limit tih linija a to je ustvari jedan pixel, ne može da se ide ispod tog limita i onda se ceo matematički račun limitira na osnovu tih parametara i tako se pixel-po-pixel složi na svoje mesto da napravi taj 0-90*deg "izgled" sa pojedinačnim pixelima. BTW2: Za iscrtavanje linija pixel-po-pixel se koristi standardno "Bresenham's line algorithm" BTW3: Postoje "dodaci" za oba algoritma koji se tiču "ulepšavanja" prikaza sa dodavanjem pixela svetlije boje pa napravi lep "smoting" da ne bude "krzav" prikaz. Obično to ostave da radi GPU preko fragemt shejdera. RE: Da ne otvaram novu temu, par pitanja... - mikikg - 05-04-2024 BTW4: Zaboravih, neophodno je da se izračuna OBIM tog "arc", zato je bitna stavka da se zna poluprečnik jer se za isti ugao pri različitom poluprecniku menja obim a obim (u pixelima) je neophodan da bi se izračunao broj iteracija sa kojima da nacrta tačke, prakticno linije ali duzine 1px. RE: Da ne otvaram novu temu, par pitanja... - mikikg - 05-04-2024 Naterao sam ovo sokoćalo da napravi ispravan code, ovde se vidi osnova za crtanje kruga sa početnim i krajnjim uglom. Dalje može da se napravi funkcija (alias) koja crta 4 ćoška (gornj-levi, gornji-desni, donji-levi i donji-desni) i da se ona spoji sa funkcijom za crtanje zaobljenog pravougaonika gde imaš "r" kao prečnik za crtanje što je istovremeno i "offset" sa kojim moraš da pomeriš početak/kraj linija i sto toliko se pomera centar odakle se icrtava sam "ćošak". Dakle tu je bitna matematika sinus/cosinus koji treba da se izračuna ali se često to "pre-izračuna" i postavi u lookup-tablice zbog brzine izvršavanja i eventulano ono deljenje sa 1 / r se stavi isto u tablice jer ima neki konačan broj rezultata tako da se onda celo iscrtavanbje može bazira na prostim i brzim funkcijama bez upotrebe floating-point modula i instrukcija. RE: Da ne otvaram novu temu, par pitanja... - HomeMadeAudioProject - 05-05-2024 (05-04-2024, 08:11 AM)HomeMadeAudioProject Wrote: ne znam jesam li dobro shvatio problem,ali zar nije manji radijus zapravo veliki umanjen za taj međuprostor? (oba radijusa počinju iz iste tačke ) (05-04-2024, 12:47 PM)Dragan100 Wrote:(05-04-2024, 12:30 PM)savan Wrote: Evo kako to izgleda u SolidWorks, postavio sam spoljni kvardrat 100x100 a unutrasnji 90x90, oborena spoljna ivica je poluprecnika 9mm, u programu dobijam da je 4mm unutrasnji poluprecnik oborene ivice, kako to izracunati matematicki da se dobije rezultat = 4mm nemam ideju : ) nije li to to, r_un bi bio 4? RE: Da ne otvaram novu temu, par pitanja... - savan - 05-05-2024 Zanimljivo je crtanje u programskom kodu, ja sam one moje round dugmice u onoj prvoj diy lemilici sa touch screen radio sa necim sto retko ko radi, ne libgdx nego libgd, morao sam sve graficke biblioteke od libjpeg, libtiff, libpng, ... da kompilujem da bi mogao da kompilujem libgd i onda sam tako po secanju na php preveo to u C i uspeo na kraju krajeva da crtam, pisem na nivou kako se to radi u php, sve slike sam generisao pre samog main loop i smestio u memoriju, dugme u boji sa oborenim ivicama, dugme pritisnuto druge boje... i onda ocitavao u dispmanx i nije to lose radilo moglo je i bolje, okacio sam jbc.c fajl u nekim od tema pre neki dan koga interesuje kako sam to radio : ) Moze to da se odradi i nativno bez biblioteke, samo treba poznavanje matematike za geometriju i moze to da se napravi, probacu ja to na onom kruznom displeju kad proradi i kad krenem da pravim gui trebace mi to! edit: iz tablice : ) RE: Da ne otvaram novu temu, par pitanja... - yugaja - 05-05-2024 Malo off topic ali bar u pravoj temi ![]() Ja sam sve dugmiće i.. Ma u stvari sve, sve kontrole crtao native od nule, nešto uz pomoc matematike nešto uz pomoć pripremljenih slika. I sada ponekad koristim tu moju biblioteku, jer je poznajem i lako mogu prilagoditi bas kako mi treba Ali iskreno tu svaka prednost prestaje. Svi kuvaju sa istom vodom, svi rade isto, npr.. emwin ili lvgl, touchgfx.. i mislim da nema smisla ponavljati sve od nule. Ako je u pitanju neki embedded system, ja bih sada prvo pokrenuo lvgl. Čisto da probam. I kako je open source... uvek u dokolici možeš krenuti da optimizujes ono što ti treba... |