不会啊大侠帮忙啊同一平面上两个三角形相交部分面积,该怎么解决
不会啊,大侠帮忙啊,同一平面上两个三角形相交部分面积
仔细观察下列图形:要求编程实现两个三角形相交后重叠部分的面积。真的不会啊啊啊啊啊,
谁给帮忙看看啊啊啊啊啊。。




这个编程怎么实现啊
------解决方案--------------------
如果是画在屏幕上,求相交的面积有多少像素还好办,用微分的方法就行
如果是连续的,还得积分,麻烦了
或者把每一种相交的情况都考虑到,再判断属于哪一种情况,分别计算各部分面积
------解决方案--------------------
向量叉乘
计算几何大牛:http://www.codeproject.com/KB/recipes/Wykobi.aspx
------解决方案--------------------
海伦公式
------解决方案--------------------
帮帖主搭了个架子。谁让偶只是一名“架构师”呢?

仔细观察下列图形:要求编程实现两个三角形相交后重叠部分的面积。真的不会啊啊啊啊啊,
谁给帮忙看看啊啊啊啊啊。。
这个编程怎么实现啊
------解决方案--------------------
如果是画在屏幕上,求相交的面积有多少像素还好办,用微分的方法就行
如果是连续的,还得积分,麻烦了
或者把每一种相交的情况都考虑到,再判断属于哪一种情况,分别计算各部分面积
------解决方案--------------------
向量叉乘
计算几何大牛:http://www.codeproject.com/KB/recipes/Wykobi.aspx
------解决方案--------------------
海伦公式
------解决方案--------------------
帮帖主搭了个架子。谁让偶只是一名“架构师”呢?
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
HDC hdc;
HWND WINAPI GetConsoleWindow();
void HideTheCursor() {
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
cciCursor.bVisible = FALSE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
void ShowTheCursor() {
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
cciCursor.bVisible = TRUE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
void Area_of_intersected_triangle() {
int n,k;
HBRUSH hbrush;
RECT rect;
struct P {int x,y;};
struct T {
struct P a,b,c;
} t1,t2;
char s[10];
hbrush=CreateSolidBrush((COLORREF)0x00FFFFFF);
n=1;
while (1) {
t1.a.x=5+rand()%296;
t1.a.y=5+rand()%296;
t1.b.x=5+rand()%296;
t1.b.y=5+rand()%296;
t1.c.x=5+rand()%296;
t1.c.y=5+rand()%296;
//TODO:确定三点能构成三角形(任意两边长度之和大于第三边长度)
//TODO:三点的顺序按逆时针顺序排列
t2.a.x=5+rand()%296;
t2.a.y=5+rand()%296;
t2.b.x=5+rand()%296;
t2.b.y=5+rand()%296;
t2.c.x=5+rand()%296;
t2.c.y=5+rand()%296;
//TODO:确定三点能构成三角形(任意两边长度之和大于第三边长度)
//TODO:三点的顺序按逆时针顺序排列
//判断两个三角形的位置关系:分离、包含、重合(顶点、边)、相交。包含时计算小三角形面积。相交时求出相交部分,并划分为最多四个小三角形求它们的面积和。
sprintf(s,"%d",n);
TextOut(hdc,10,10,s,strlen(s));
MoveToEx(hdc,t1.a.x,t1.a.y,NULL);
LineTo(hdc,t1.b.x,t1.b.y);
LineTo(hdc,t1.c.x,t1.c.y);
LineTo(hdc,t1.a.x,t1.a.y);
MoveToEx(hdc,t2.a.x,t2.a.y,NULL);
LineTo(hdc,t2.b.x,t2.b.y);
LineTo(hdc,t2.c.x,t2.c.y);
LineTo(hdc,t2.a.x,t2.a.y);
k=getch();
if (k==27) break;
n++;
rect.left=0;
rect.top=0;
rect.right=300;
rect.bottom=300;
FillRect(hdc, &rect, hbrush);
}
DeleteObject(hbrush);