Diễn đàn sinh viên công nghệ thông tin, chia sẻ, giao lưu, học hỏi. Kết nối ... Những ngôn ngữ cơ bản mà bạn cần phải nắm nếu muốn thành 1 lập trình viên ...VuaTenMien.Com
Hiển thị các bài đăng có nhãn Kỹ thuật đồ họa. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Kỹ thuật đồ họa. Hiển thị tất cả bài đăng
Thứ Năm, 29 tháng 8, 2013
Giải thuật sinh đường Ellipse
#include <graphics.h>
#include <conio.h>
#define ROUND(a) ((long)(a+0.5))
void plot(int xc, int yc, int x, int y, int color){
putpixel(xc+x, yc+y, color);
putpixel(xc-x, yc+y, color);
putpixel(xc+x, yc-y, color);
putpixel(xc-x, yc-y, color);
}
void Mid_ellipse(int xc, int yc, int a, int b, int color){
long x, y, fx, fy, a2, b2, p;
x = 0;
y = b;
a2 = a * a;
b2 = b * b;
fx = 0;
fy = 2 * a2 * y;
plot(xc, yc, x,y, color);
p = ROUND(b2-(a2*b)+(0.25*a));
while (fx < fy){
x++;
fx += 2*b2;
if (p<0)
p += b2*(2*x +3);
else{
y--;
p+= b2*(2*x +3) + a2*(-2*y +2);
fy -= 2*a2;
}
plot(xc, yc, x, y, color);
}
p = ROUND(b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1) - a2*b2);
while (y>0){
y--;
fy -= 2*a2;
if (p>=0)
p+=a2*(3 - 2*y);
else{
x++;
fx += 2*b2;
p += b2*(2*x+2) + a2*(-2*y +3);
}
plot(xc, yc, x, y, color);
}
}
void main(){
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "");
Mid_Ellipse(getmaxx() / 2, getmaxy() / 2, 150, 80, 4);
getch();
closegraph();
}
Các giải thuật sinh đường tròn trong C/C++
1. Giải thuật sinh đường tròn Bresenham:
void Bre_circle(int xc, int yc, int Radius, int color) {
int x, y, p;
x = 0;
y = Radius;
p = 3 - 2 * Radius;
while (x <= y) {
putpixel(xc + x, yc + y, color);
if (p < 0)
p += 4 * x + 6;
else {
p += 4 * (x-y) + 10;
y--;
}
x++;}
}
2. Giải thuật sinh đường tròn Midpoint :
void Mid_circle(int xc, int yc, int Radius, int color) {
int x, y, d;
x = 0;
y = Radius;
d = 1- Radius;
while (x <= y) {
putpixel(xc + x, yc + y, color);
if (d< 0)
d +=2 * x + 3;
else {
d += 2 * (x-y) + 5;
y--;
}
x++;
}
}
Thứ Bảy, 17 tháng 8, 2013
Các thuật toán vẽ đoạn thẳng trong C/C++
1. Thuật toán vẽ đoạn thẳng thông thường:
void dline(int x1,int y1, int x2,int y2, int color) {
float y;
int x;
for (x=x1; x<=x2; x++) {
y = y1 + (x-x1)*(y2-y1)/(x2-x1) ;
putpixel(x, Round(y), color );
}
}
2. Thuật toán DDA (Digital Differential Analizer):
void ddaline (int x1,int y1,int x2,int y2,int c){
int x=x1;
float y=y1;
float k=(float)(y2-y1)/(x2-x1);
putpixel(x,round(y),c);
for(int i=x1;i<=x2;i++) {
x++;
y=y+k;
putpixel(x,round(y),c);
}
}
3. Thuật toán Bresenham
/*Thuat toan Bresenham ve dthang (0<k<1) */
void Bre_line(int x1, int y1, int x2, int y2, int c)
{int x, y, dx, dy,p,const1,const2;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
p = 2*dy - dx;
const1 = 2*dy;
const2 = 2*(dy-dx);
for (x=x1; x<=x2; x++) {
putpixel(x, y, c);
if (p < 0)
p += const1; // p=p + 2dy
else {
p +=const2; //p=p+2dy-2dx
y++;
}
}
}
4. Thuật toán Trung điểm - Midpoint
/* Thuat toan Midpoint de ve doan thang (0<k<1) */
void Mid_line(int x1, int y1, int x2, int y2, int c){
int x, y, dx, dy,d;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
d= dy - dx/2;
for (x=x1; x<=x2; x++){
putpixel(x, y, c);
if (d <= 0)
d = d + dy;
else {
y ++;
d = d + dy - dx;
}}
}
Đăng ký:
Bài đăng (Atom)
Bài đăng phổ biến
-
import java.io.*; public class Test_Tng{ public static void main(String args[]){ InputStream is = System.in; ...
-
import java.io.*; public class ReadLine{ public static void main(String args[]){ InputStreamReader isr = new InputStreamReader...
-
import java.io.*; public class Gptb2{ public static void main(String args[]){ InputStreamReader isr = new InputStream...
-
import java.io.*; public class Test_Ngto{ public static void main(String args[]){ InputStream is = System.in; ...
-
<%@ Page Language="VB" Debug="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespa...
-
<html> <head><script LANGUAGE="JavaScript"> function a_plus_b(form) { a=eval(form.a.value) ...
-
1. Hãy xây dựng lớp Diem cùng với các đối tượng điểm trong mặt phẳng và các phương thức sau: - Phương thức khởi tạo - Phương...
-
<html> <head> <title>Giai phuong trinh bac 2</title> <script language="JavaScript"> function giai(fo...
-
Vacationnews.Xyz Vacationsnews.Xyz Vacationsworld.Xyz Vantagecreditunion.Xyz Venturenews.Xyz Ventureworld.Xyz Vermontattorney.Xyz Vermontho...
-
<%@ Page Language="VB" Debug="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespa...


