PDA

View Full Version : سوال: رسم بیضی زاویه دار در C



K.Mohammadreza
چهارشنبه 31 فروردین 1390, 16:25 عصر
با سلام همانطور که از عنوان سوال هم معلوم است من میخوام یک بیضی را حول نقطه مرکزش بچرخانم ولی نمی توانم بیضی زاویه دار رسم کنم ممنون میشم راهنمایی کنید

با تشکر و سپاس فراوان
ضمنا میخوام دستور ellipse حتما استفاده شده باشه.

K.Mohammadreza
چهارشنبه 31 فروردین 1390, 18:31 عصر
سلام دوستان به فکر من هم باشید!!!!!!!:گریه::گریه::گریه:

Aras_rood
چهارشنبه 31 فروردین 1390, 19:21 عصر
والله من یه ساعته اینترنت و شخم می زنم!
هنوز که چیزی پیدا نکردم!!!

returnx
چهارشنبه 31 فروردین 1390, 19:22 عصر
بیضی زاویه دار
بیضی جزو اشکال دایره ای شکل هست و نمی تونه دارای زاویه باشه !!
شما باید شکلتون رو یا نسبت به نقطه مرکز دوران بدید یا نسبت به یک نقطه خاصی بر روی بیضی....

K.Mohammadreza
چهارشنبه 31 فروردین 1390, 20:32 عصر
ممنون خب همون که شما میگید چطوری اینکارو بکنم؟

K.Mohammadreza
چهارشنبه 07 اردیبهشت 1390, 18:12 عصر
کسی جواب ننوشته!!!!! باورم نمیشه!!!!پس من چکار کنم؟

shahmohammadi
پنج شنبه 08 اردیبهشت 1390, 14:11 عصر
نمي دونم بهترين راه باشه يا نه. اما راهي كه به نظرم مي رسه اينه كه ابتدا در يك ماتريس 2*2 بيضي بدون زاويه رو رسم كني بعد همون جا دورانش بدي و به صفحه بياريش.
باز منتظرم الگوريتم هاي بهتري رو هم از دوستان بشنوم.

m.soleimani
پنج شنبه 08 اردیبهشت 1390, 15:24 عصر
یه نگاه به این بنداز موفق باشی./

http://root.cern.ch/root/html/tutorials/graphics/ellipse.C.html

m.soleimani
پنج شنبه 08 اردیبهشت 1390, 15:44 عصر
اینم یه نمونه ساده برای کنسول :لبخند:



#include <stdio.h>
#include <math.h>
#include <conio.h>
int main(){
int ab, ord;
for(ab = -5; ab <= 5; ab++)
{
for(ord = -5; ord <= 5; ord++)
{
if(pow(ab,2)+pow(ord, 2)==25)
printf("+");
else
printf(" ");
}
printf("\n");
}
system("pause");
return 0;
}

مصطفی ساتکی
پنج شنبه 08 اردیبهشت 1390, 17:18 عصر
اين كد براتون يه بيضي با هر زاويه كه بيخايد رسم مي كنه براي تكميل اون نقاط مياني بين 2 نقطه بايد تخمين زده بشه كه مي تونيد با هر سه نقطه polygon بينشون رو رسم كنيد

void drawRotateEllipse(int centerx,int centery,int width,int height,double angle,int clr)
{
const double PI = 3.14159265358979323846;
int steps = 72;


double beta = -angle * (PI / 180);
double sinbeta = sin(beta);
double cosbeta = cos(beta);

for (int i = 0; i < 360; i += 360 / steps)
{
double alpha = i * (PI / 180) ;
double sinalpha = sin(alpha);
double cosalpha = cos(alpha);

int X = centerx + (width * cosalpha * cosbeta - height * sinalpha * sinbeta);
int Y = centery + (width * cosalpha * sinbeta + height * sinalpha * cosbeta);
setpixel(X,Y,clr);
}


}

shahmohammadi
پنج شنبه 08 اردیبهشت 1390, 19:22 عصر
در آدرس زير الگوريتم بالا به صورت تابعي در جاوااسكريپت نوشته شده.
با اين تفاوت كه وقتي نقطه اي رو پيدا كرد اونو تو آرايه اي قرار مي ده و بعد اون آرايه رو با مجموعه نقاط به دست آمده توش برمي گردونه.
بعد يه تابع ديگه اين خطوط رو به هم وصل مي كنه و يه بيضي ميكشه.
من چون با آرايه هاش مشكل داشتم نتونستم به سي تبديلش كنم.
http://en.wikipedia.org/wiki/Ellipse
آخر صفحه.