Beispiel #1
0
unsigned char is_inside (struct point pt, struct triangle *tri) {
	int ar1, ar2, ar3, total;
	struct triangle temp;

	total = tri_area (tri);
	if (total < 0) total *= -1;

	temp.pt1 = pt;
	temp.pt2 = tri->pt2;
	temp.pt3 = tri->pt3;
	ar1 = tri_area (&temp);
	if (ar1 < 0) ar1 *= -1;

	temp.pt1 = tri->pt1;
	temp.pt2 = pt;
	temp.pt3 = tri->pt3;
	ar2 = tri_area (&temp);
	if (ar2 < 0) ar2 *= -1;

	temp.pt1 = tri->pt1;
	temp.pt2 = tri->pt2;
	temp.pt3 = pt;
	ar3 = tri_area (&temp);
	if (ar3 < 0) ar3 *= -1;

	return ((ar1 + ar2 + ar3) <= total);
}
Beispiel #2
0
double trap_area(double short_side, double long_side, double height) {
    //caculate the area of a trapezoid

    //you can store the result of a function in a variable
    //to do so just assign a variable to a function that returns something
    double r_area = rect_area(short_side, height); //the area of the center square
    double tri_base = (long_side - short_side) / 2.0;
    double tri_areas = tri_area(tri_base, height) * 2;//the area of the triable parts
    double t_area = r_area + tri_areas;

    return t_area;
}
Beispiel #3
0
int main(int argc, char *argv[])
{
	if (argc != 3) {
		printf("Usage: %s <g> <h>\n", argv[0]);
		return 1;
	}

	double g = strtod(argv[1], NULL);
	double h = strtod(argv[2], NULL);

	printf("area is %f\n", tri_area(g, h));

	return 0;
}
Beispiel #4
0
void do_tri() {
    double base, height, area;

    printf("Please enter the base of the triangle: ");
    scanf("%lf", &base);

    printf("Please enter the height of the triangle: ");
    scanf("%lf", &height);

    area = tri_area(base, height);

    printf("The area of a triangle with base %.2lf and height %.2lf is %.2lf\n", base, height, area);

}//do_tri
Beispiel #5
0
int main()
{
	char fig[11][2];
	double crd[11][6];
	int i, j, k;
	double x, y, d;
	bool is_contained;

	for(i = 1; scanf("%s", &fig[i][0]), fig[i][0] != '*'; i++)
	{
		if(fig[i][0]=='r')
			scanf("%lf%lf%lf%lf", &crd[i][0], &crd[i][1], &crd[i][2], &crd[i][3]);
		else if(fig[i][0]=='c')
			scanf("%lf%lf%lf", &crd[i][0], &crd[i][1], &crd[i][2]);
		else if(fig[i][0]=='t')
			scanf("%lf%lf%lf%lf%lf%lf", &crd[i][0], &crd[i][1], &crd[i][2], 
			                            &crd[i][3], &crd[i][4], &crd[i][5]);
	}

	for(j = 1; scanf("%lf%lf", &x, &y) == 2; j++)
	{
		if(x==9999.9 && y==9999.9)
			break;

		is_contained = false;
		
		for(k = 1; k < i; k++)
		{
			if(fig[k][0] == 'r')
			{
				if(x > crd[k][0] && x < crd[k][2] &&
				   y < crd[k][1] &&	y > crd[k][3] )
				{
					printf("Point %d is contained in figure %d\n",  j, k);
					is_contained = true;
				}
			}
			else if(fig[k][0] == 'c')
			{
				d = sqrt(pow((x - crd[k][0]), 2.0) + pow((y - crd[k][1]), 2.0));
				
				if(d < crd[k][2])
				{
					printf("Point %d is contained in figure %d\n", j, k);
					is_contained = true;
				}
			}
			else if(fig[k][0] == 't')
			{
			    double t, t1, t2, t3;
				t1 = tri_area(crd[k][0], crd[k][1], crd[k][2], crd[k][3], x, y);
				t2 = tri_area(crd[k][2], crd[k][3], crd[k][4], crd[k][5], x, y);
				t3 = tri_area(crd[k][0], crd[k][1], crd[k][4], crd[k][5], x, y);
				t  = tri_area(crd[k][0], crd[k][1], crd[k][2], crd[k][3], crd[k][4], crd[k][5]);
				
				if(t1 != 0 && t2 != 0 && t3 != 0 && (fabs((t1 + t2 + t3) - t) < 1e-6))
				{
					printf("Point %d is contained in figure %d\n", j, k);
					is_contained = true;
				}
			}
		}
		
		if(is_contained == false)
			printf("Point %d is not contained in any figure\n", j);
	}

	return 0;
}