Example #1
0
void	QtDrawing3d::Look ()						//	assign the viewing parameters
{																																								//	begin												//	compute the tangent of the field of view half-angle
	double distance = 1;																						//	compute the distance from the eye to the view plane_3d
	son_vector3d_t	vpn,u,v,tmp,tmp1;
	son_point3d_t vrp;

	unit_vector3d(&eye, &vpn);
	tmp.v[0] = 0.0; tmp.v[1] = 1.0; tmp.v[2] = 0.0;
	cross_product_3d(&tmp, &vpn, &tmp1);
	unit_vector3d(&tmp1, &u);
	cross_product_3d(&vpn, &u, &v);//	calculate the y' axis vector_3d
	mult_vector3d(&vpn, -distance);
	add_2_point3d(&eye, &vpn, &vrp);
	
	//viewing = ViewMatrix (u, v, vpn, vrp) * Perspective (distance);								//	set up the viewing transformation matrix_3d
	/* View matrix */
	double dot = 0;
	m_modelViewMatrix.m[0][0] = u.v[0];																															//	assign the first column
	m_modelViewMatrix.m[1][0] = u.v[1];
	m_modelViewMatrix.m[2][0] = u.v[2];
	
	dot_product_3d(&vrp, &u, &dot);
	m_modelViewMatrix.m[3] [0] = -(dot);

	m_modelViewMatrix.m[0][1] = v.v[0];																															//	assign the second column
	m_modelViewMatrix.m[1][1] = v.v[1];
	m_modelViewMatrix.m[2][1] = v.v[2];
	dot_product_3d(&vrp, &v, &dot);
	m_modelViewMatrix.m[3][1] = -(dot);

	m_modelViewMatrix.m[0][2] = vpn.v[0];																															//	assign the third column
	m_modelViewMatrix.m[1][2] = vpn.v[1];
	m_modelViewMatrix.m[2][2] = vpn.v[2];
	dot_product_3d(&vrp, &vpn, &dot);
	m_modelViewMatrix.m[3][2] = -(dot);

	m_modelViewMatrix.m[0][3] = (0.0);																														//	assign the fourth column
	m_modelViewMatrix.m[1][3] = (0.0);
	m_modelViewMatrix.m[2][3] = (0.0);
	m_modelViewMatrix.m[3][3] = (1.0);
}	
Example #2
0
void ellipsiod2Axes(Ellipsoid3D *pellipsoid, Vect3D *paxis1, Vect3D *paxis2, Vect3D *paxis3) {

    double az1, az2, dip1, dip2;
    double cosd1, cosd2;


    /* strike angles positive CCW from East = 0 */
    az1 = 90.0 - pellipsoid->az1;
    az2 = 90.0 - pellipsoid->az2;
    /* dip angles increasing downwards from horiz = 0 */
    dip1 = -pellipsoid->dip1;
    dip2 = -pellipsoid->dip2;

    /* get 3D vector axes */

    cosd1 = cos(DE2RA * pellipsoid->dip1);
    paxis1->x = cos(DE2RA * az1) * cosd1;
    paxis1->y = sin(DE2RA * az1) * cosd1;
    paxis1->z = -sin(DE2RA * dip1);

    cosd2 = cos(DE2RA * pellipsoid->dip2);
    paxis2->x = cos(DE2RA * az2) * cosd2;
    paxis2->y = sin(DE2RA * az2) * cosd2;
    paxis2->z = -sin(DE2RA * dip2);

    cross_product_3d(
            paxis1->x, paxis1->y, paxis1->z,
            paxis2->x, paxis2->y, paxis2->z,
            &paxis3->x, &paxis3->y, &paxis3->z);

    paxis1->x *= pellipsoid->len1;
    paxis1->y *= pellipsoid->len1;
    paxis1->z *= pellipsoid->len1;
    paxis2->x *= pellipsoid->len2;
    paxis2->y *= pellipsoid->len2;
    paxis2->z *= pellipsoid->len2;
    paxis3->x *= pellipsoid->len3;
    paxis3->y *= pellipsoid->len3;
    paxis3->z *= pellipsoid->len3;

}