double inter_parabo(t_coordonne *vect, t_coordonne *oeil, int rayon) { double a; double b; double c; double delta; double r; r = (double)rayon * (double)M_PI / 180.000; a = POW(vect->x) + POW(vect->y); b = 2 * ((oeil->x * vect->x) + (oeil->y * vect->y)) - (r * vect->z); c = POW(oeil->x) + POW(oeil->y) - (r * oeil->z); delta = (b * b) - (4 * (a * c)); return (search_res(a, b, delta)); }
double inter_paraboloide(t_utils utils, t_objet *obj) { double a; double b; double c; double R; double d; R = obj->size * M_PI / 180; a = pow(utils.vect.v_x, 2) \ + pow(utils.vect.v_y, 2); b = 2 * (utils.coord.x * utils.vect.v_x \ + utils.coord.y * utils.vect.v_y) \ - tan(R) * utils.vect.v_z; c = pow(utils.coord.x, 2) \ + pow(utils.coord.y, 2) \ - tan(R) * utils.coord.z; d = delta(a, b, c); return (search_res(a, b, d)); }
double inter_cone(t_utils utils, t_objet *obj) { double a; double b; double c; double R; double d; R = obj->size * M_PI / 180; a = pow(utils.vect.v_x, 2) \ + pow(utils.vect.v_y, 2) \ - (pow(utils.vect.v_z, 2) \ * (pow(tan(R), 2))); b = (2 * utils.vect.v_x * utils.coord.x) \ + (2 * utils.vect.v_y * utils.coord.y) \ - ((2 * utils.vect.v_z * utils.coord.z) * (pow(tan(R), 2))); c = (pow(utils.coord.x, 2) \ + pow(utils.coord.y, 2) \ - (pow(utils.coord.z, 2) * pow(tan(R), 2))); d = delta(a, b, c); return (search_res(a, b, d)); }
int CALLBACK MyDialogFunc(HWND hdwnd, UINT message, WPARAM wParam, LPARAM lParam) { static int modi, driver, current_sel_driver; int i; unsigned int ww; static D3DDEVICEINFO *tabella_dev; char modo_str[30]; BOOL err; switch (message) { case WM_INITDIALOG: // enumerazione dei driver directx 8 driver=Enumerate_DrawDriver(&tabella_dev); if (driver<=0) debug_error(hdwnd, "No DirectX 8 drivers present"); for (ww=0; ww<(unsigned int)driver; ww++) SendDlgItemMessage(hdwnd, IDC_COMBO2, CB_ADDSTRING, 0, (LPARAM)tabella_dev[ww].strDesc); SendDlgItemMessage(hdwnd, IDC_COMBO2, CB_SETCURSEL, 0, (LPARAM)0); current_sel_driver=0; for (ww=0; ww<tabella_dev[current_sel_driver].dwNumModes; ww++) { sprintf(modo_str, "%dx%dx%d", tabella_dev[0].SupportedModes[ww].Width, tabella_dev[0].SupportedModes[ww].Height, tabella_dev[0].SupportedModes[ww].Bpp); SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)modo_str); } // cerco una res 640x480 (prima 32bpp poi 16bpp) i=search_res(tabella_dev, current_sel_driver, 320, 240, 32); if (i==-1) { i=search_res(tabella_dev, current_sel_driver, 320, 240, 16); if (i==-1) debug_error(miawin, "This intro need a 320x240 resolution support!"); //if (i==-1) SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_SETCURSEL, 0, (LPARAM)0); else SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_SETCURSEL, i, (LPARAM)0); } else SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_SETCURSEL, i, (LPARAM)0); // setto fullscreen di default SendDlgItemMessage(hdwnd, IDC_RADIO1, BM_SETCHECK, 0, 0); SendDlgItemMessage(hdwnd, IDC_RADIO2, BM_SETCHECK, 1, 0); SendDlgItemMessage(hdwnd, IDC_CHECK1, BM_SETCHECK, 0, 0); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_COMBO2: if (HIWORD(wParam)==CBN_CLOSEUP) { i=SendDlgItemMessage(hdwnd, IDC_COMBO2, CB_GETCURSEL, 0, 0L); if (i!=current_sel_driver) { current_sel_driver=i; SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_RESETCONTENT, 0, (LPARAM)0); // enumerazione modi video del nuovo driver for (ww=0; ww<tabella_dev[i].dwNumModes; ww++) { sprintf(modo_str, "%dx%dx%d", tabella_dev[i].SupportedModes[ww].Width, tabella_dev[i].SupportedModes[ww].Height, tabella_dev[i].SupportedModes[ww].Bpp); SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)modo_str); } // cerco una res 320x240 (prima 32bpp poi 16bpp) i=search_res(tabella_dev, current_sel_driver, 320, 240, 32); if (i==-1) { i=search_res(tabella_dev, current_sel_driver, 320, 240, 16); if (i==-1) debug_error(miawin, "This intro need a 320x240 resolution support!"); //if (i==-1) SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_SETCURSEL, 0, (LPARAM)0); else SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_SETCURSEL, i, (LPARAM)0); } else SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_SETCURSEL, i, (LPARAM)0); // setto fullscreen di default SendDlgItemMessage(hdwnd, IDC_RADIO1, BM_SETCHECK, 0, 0); SendDlgItemMessage(hdwnd, IDC_RADIO2, BM_SETCHECK, 1, 0); } } break; case IDC_RADIO1: i=SendDlgItemMessage(hdwnd, IDC_COMBO2, CB_GETCURSEL, 0, 0L); if (!tabella_dev[i].bCanDoWindowed) { SendDlgItemMessage(hdwnd, IDC_RADIO1, BM_SETCHECK, 0, 0); SendDlgItemMessage(hdwnd, IDC_RADIO2, BM_SETCHECK, 1, 0); } break; case IDCANCEL: EndDialog(hdwnd, 0); return 1; case IDOK: fpsdiv=30; fpsdiv=GetDlgItemInt(hdwnd, IDC_EDIT2, &err, FALSE); if (fpsdiv==0) fpsdiv=30; RunFullscreen=(BOOL)SendDlgItemMessage(hdwnd, IDC_RADIO2, BM_GETCHECK, 0, 0); NoSound=(BOOL)SendDlgItemMessage(hdwnd, IDC_CHECK1, BM_GETCHECK, 0, 0); i=SendDlgItemMessage(hdwnd, IDC_COMBO1, CB_GETCURSEL, 0, 0L); driver_to_use=tabella_dev[current_sel_driver]; driver_to_use.WantedMode=tabella_dev[current_sel_driver].SupportedModes[i]; if ((driver_to_use.WantedMode.Width == 320) || (driver_to_use.WantedMode.Height == 240)) { driver_to_use.bFullscreen=RunFullscreen; EndDialog(hdwnd, 1); return 1; } else MessageBox(hdwnd, "You MUST select a 320x240 resolution", "AD-Debug", NULL); } } return(0); }