Първо искам да те поздравя за това, че си успял да покажеш графика в постинга си. Това го виждаме за първи път в клуба :)
Разбирам какво искаш да направиш. Сигурно е нещо такова, като да въртиш с мишката кръгло копче подобно на копчето за усилване на звука в някоя уредба; но нарисувано на екрана, разбира се.
Ако е така, . . . аз бих постъпил по следния начин.
Когато се премести мишката, мога да знам новите (последните) и координати P=(X2, Y2) а също така и предишните и координати Q=(X1, X1) които ще съм си запомнил. Надявам се, че можеш да получиш тези координати в своя език, понеже навсякъде където съм виждал съобщенията за движение на мишката винаги съдържат координатите и.
Сега тези две точки P и Q заедно с центъра О=(X0, Y0) на окръжността образуват триъгълника POQ (разбира се, ако не лежат на една линия). От този триъгълник трябва да пресметнеш ъгъла alpha при върха O; и може да приемеш, че user-а желае да направи завъртване на ъгъл alpha.
След като знаеш alpha, можеш да да завъртиш своя диск по окръжността на този ъгъл. За да ти е по-лесно, препоръчвам ти да използваш полярни координати, т. е. винаги да помниш текущото място на дискати чрез ъгъла phy. Центъра на окръжността O и ъгъла phy определят еднозначно мястото на диска върху окръжността. Първоначално, при стартиране на програмата поставяш phy = 0 например. По-нататък, когато трябва да завъртим диска на ъгъл alpha, новата стойност на phy очевидно ще е phy = phy + alpha а координатите на диска се пресмятат както ти писах:
X = X0 + R*cos(phy)
Y = Y0 + R*sin(phy)
Остава проблема, че твоя език има само елементарни операции, като +, -, *, /
За да направиш това, което ти казах, ще са ти необходими още функции като
sqrt(x), sin(x), cos(x), atan(x), . . .
Аз се съмнявам, че в твоя език ги няма. Опитай отново да ги потърсиш в Help-а на програмата, с която работиш.
Но ако ги няма, . . . пак има решение. Всички тези функции могат да се развият в ред на Тейлор, където ще имаме само +, -, * и /, като ще можем да ги пресметнем с някаква точност.
Ако не знаеш как да намериш ъгъла alpha или да развиеш тези функции в ред на Тейлор, мога да ти кажа -- пиши ми на e-mail който съм оставил. Предпчитам по e-mail, за да не ставаме досадни на другите в клуба :)
/b33
b33@dir.bg
|