PDA

View Full Version : نحوه بدست اوردن مختصات نقاط دو نقطه



masoud_cpu
جمعه 02 اردیبهشت 1390, 18:22 عصر
با سلام .
دوستان من دو نقطه دارم در صفحه مختصات که به وسیله یک خط به هم وصل شده اند به فرض مثال زاویه خط 35 درجه هست . حالا چطوری میشه مختصات نقاط روی خط رو بدست اورد .
به عکس توجه کنید
69048با تشکر

tdkhakpur
جمعه 02 اردیبهشت 1390, 20:56 عصر
به نظرم فرمول ریاضی برای این کار وجود داره یه چیزی شبیه به فرمول زیر.


tang(30) =y/x

درجه رو داری میتونی عدد تصادفی از x بین 30 تا 60 رو بدی و با فرمول فوق عدد مختصات y رو بدست بیاری

masoud_cpu
جمعه 02 اردیبهشت 1390, 23:32 عصر
با سلام
خوب من سوالم رو کمی فنی تر می پرسم .
اگر در صفحه نمایش یک خط مانند خط شکل بالا داشته باشیم و بخواهیم تعداد پیکسل ها که خود مختصات X , Y دارند رو بدست بیاریم ایا باید از تابع خاصی استفاده کرد .
منظورم از نقاط یک سری از پیکسل ها هستند که در واقع خط رو تشکیل میدن .
با تشکر

tdkhakpur
جمعه 02 اردیبهشت 1390, 23:50 عصر
بخواهیم تعداد پیکسل ها که خود مختصات X , Y دارند رو بدست بیاریم ایا باید از تابع خاصی استفاده کرد .

نه باید از فرمول ریاضی و دو سه خط برنامه براش بنویسید.
اون بالا داخل پست 2 اگر به ط مقدار بدید میتونید Y رو بصورت زیر پیدا کنید و این دو نقطه X, Y همان نقاطی هستند که روی خط قرار دارند یا در امتداد اون خط


Y = X/TANG(30)

masoud_cpu
شنبه 03 اردیبهشت 1390, 00:29 صبح
نه باید از فرمول ریاضی و دو سه خط برنامه براش بنویسید.
اون بالا داخل پست 2 اگر به ط مقدار بدید میتونید Y رو بصورت زیر پیدا کنید و این دو نقطه X, Y همان نقاطی هستند که روی خط قرار دارند یا در امتداد اون خط


Y = X/TANG(30)

سلام .
دوست من نگاه یکم شفاف سازی انجام بدم .
درس مربوط به گرافیک کامپیوتری هست . استاد گفت که فقط میشه از یک الگوریتم بازگشتی استفاده کرد ولی من مصر بودم که الگوریتم های دیگه ای هستند که با انها می شود پیکسل ها از نقطه X0 تا نقطه x1 و همچنین مختصات اون نقاط رو بدست اورد ولی متاسفانه نتونستم از خودم دفاع کنم البته تونستم از الگوریتم دیگه ای برای شمارش و بدست اوردن مختصات نقاط در خطوط 45 درجه ، افقی ، عمودی استفاده کنم اما برای بدست اوردن مختصات پیکسل ها در خطوطی با زاویه دیگه نتونستم راه کاری پیدا کنم .
حالا دوباره : اگر دو نقطه x0 با مختصات 50،30 و نقطه x1 با مختصات 30،60 داشته باشیم چطور میتوان مختصات نقاط ( پیکسل ) های موجود روی خط ما بین این دو نقطه رو بدست اورد .
با تشکر

tdkhakpur
شنبه 03 اردیبهشت 1390, 13:45 عصر
کد زیر یک خط رو بین دو نقطه با زاویه مشخص رسم میکنه میتوانید با بررسی سورس ترسیم خط تشخیص بدید نقاط کجا قرار می گیرند و این نقاط میتونه در پیدا کردن نقاط مجهول به شما کمک کنه مثل کد زیر


#include <iostream.h>
#include "graphics.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
//---------------------------------
void draw_Angle_Line (int x0, int y0, int x1, int y1, int angle, int color)
{
float x, y;
int width = abs(x0-x1);
for( int i=0; i<width; i++){
x = x0+i;
y = y0 - (x0+i)*tan(angle*3.14f/180);
putpixel(x, y, color);
}
}
//---------------------------------
bool is_in_line (int srch_x, int srch_y, int x0, int y0, int x1, int y1, int angle)
{
int width = abs(x1-x0);
bool value=false;
float x, y;
for( int i=0; i<width && !value; i++){
x = x0+i;
y = y0 - (x0+i)*tan(angle*3.14f/180);
if( srch_x==(int)x && srch_y==(int)y ) value = true;
}
return value;
}
//---------------------------------
void main()
{
int gd=DETECT,gm;
bool value;
initgraph(&gd, &gm, "\\borlandc\\bgi (file://\\borlandc\\bgi)");
draw_Angle_Line (50, 30, 30, 60, 30, 12);
value = is_in_line (50, 20, 50, 30, 30, 60, 30);
printf("%s", value ? "pixel is in line" : "pixel is not in line");
getch();
cleardevice();
}