void datosRecta(std::vector<Object>::iterator it) { using namespace ImGui; Text("Vector direccional: "); SameLine(); vI = it->vertices[0] - it->vertices[6]; vJ = it->vertices[1] - it->vertices[7]; vK = it->vertices[2] - it->vertices[8]; while ((int)vI % 2 == 0 && (int)vJ % 2 == 0 && (int)vK % 2 == 0) { vI /= 2.0f; vJ /= 2.0f; vK /= 2.0f; } while ((int)vI % 3 == 0 && (int)vJ % 3 == 0 && (int)vK % 3 == 0) { vI /= 3.0f; vJ /= 3.0f; vK /= 3.0f; } while ((int)vI % 5 == 0 && (int)vJ % 5 == 0 && (int)vK % 5 == 0) { vI /= 5.0f; vJ /= 5.0f; vK /= 5.0f; } while ((int)vI % 7 == 0 && (int)vJ % 7 == 0 && (int)vK % 7 == 0) { vI /= 7.0f; vJ /= 7.0f; vK /= 7.0f; } cad = "" + std::to_string(vI) + "i"; if (vJ < 0) cad += std::to_string(vJ) + "j"; else cad += " + " + std::to_string(vJ) + "j"; if (vK < 0) cad += std::to_string(vK) + "k"; else cad += " + " + std::to_string(vK) + "k"; Text(cad.c_str()); xString = "X - (" + std::to_string(it->puntoRecta.x) + ") = t(" + std::to_string(vI).c_str() + ")"; yString = "Y - (" + std::to_string(it->puntoRecta.y) + ") = t(" + std::to_string(vJ).c_str() + ")"; zString = "Z - (" + std::to_string(it->puntoRecta.z) + ") = t(" + std::to_string(vK).c_str() + ")"; Text("Ecuacion parametrica: "); Text(xString.c_str()); Text(yString.c_str()); Text(zString.c_str()); cad = "(X - (" + std::to_string(it->puntoRecta.x) + ")i + (Y - (" + std::to_string(it->puntoRecta.y) + ")j + (Z - (" + std::to_string(it->puntoRecta.z) + ")j) = t(" + cad + ")"; Text("Ecuacion Vectorial :"); Text(cad.c_str()); Text("Color:"); colAux[0] = it->color.x; colAux[1] = it->color.y; colAux[2] = it->color.z; if (ColorEdit3("Color del Objeto", colAux, 1)) { it->color.x = colAux[0]; it->color.y = colAux[1]; it->color.z = colAux[2]; it->editarColor(); } if (Button("Eliminar objeto")) it->eliminado = true; }
void datosPiramide(std::vector<Object>::iterator it) { using namespace ImGui; Text("Longitud de cada lado de la base: "); SameLine(); Text(std::to_string(magnitud(glm::vec3(it->vertices[0],it->vertices[1],it->vertices[2]), glm::vec3(it->vertices[6], it->vertices[7], it->vertices[8]))).c_str()); cont = 0; for (int i = 0; i < it->vertices.size(); i += 6) { cad = let[cont] + " = (" + std::to_string(it->vertices[i]) + ", " + std::to_string(it->vertices[i + 1]) + ", " + std::to_string(it->vertices[i + 2]) + ")"; Text(cad.c_str()); cont++; } Text("Color:"); colAux[0] = it->color.x; colAux[1] = it->color.y; colAux[2] = it->color.z; if (ColorEdit3("Color del Objeto", colAux, 1)) { it->color.x = colAux[0]; it->color.y = colAux[1]; it->color.z = colAux[2]; it->editarColor(); } Separator(); Text("Escalacion en X:"); SameLine(); Text(std::to_string(it->ex).c_str()); Text("Escalacion en Y:"); SameLine(); Text(std::to_string(it->ey).c_str()); Text("Escalacion en Z:"); SameLine(); Text(std::to_string(it->ez).c_str()); if (SliderFloat("Escalacion en X", &it->ex, 0.01f, 10.0f)) it->update = true; //si se movio alguno de estos valores, marcar que se debe actualizar if (SliderFloat("Escalacion en Y", &it->ey, 0.01f, 10.0f)) it->update = true; if (SliderFloat("Escalacion en Z", &it->ez, 0.01f, 10.0f)) it->update = true; Separator(); Text("Traslacion en X:"); SameLine(); Text(std::to_string(it->tx).c_str()); Text("Traslacion en Y:"); SameLine(); Text(std::to_string(it->ty).c_str()); Text("Traslacion en Z:"); SameLine(); Text(std::to_string(it->tz).c_str()); if (SliderFloat("Traslacion en X", &it->tx, -50.0f, 50.0f)) //si se movio alguno de estos valores, marcar que se debe actualizar it->update = true; if (SliderFloat("Traslacion en Y", &it->ty, -50.0f, 50.0f)) it->update = true; if (SliderFloat("Traslacion en Z", &it->tz, -50.0f, 50.0f)) it->update = true; Separator(); Text("Angulo de Rotacion X: "); SameLine(); Text(std::to_string(it->anguloRotacionX).c_str()); Text("Angulo de Rotacion Y: "); SameLine(); Text(std::to_string(it->anguloRotacionY).c_str()); Text("Angulo de Rotacion Z: "); SameLine(); Text(std::to_string(it->anguloRotacionZ).c_str()); if (SliderAngle("Rotar respecto a X", &it->anguloRotacionX)) //si se movio alguno de estos valores, marcar que se debe actualizar it->update = true; if (SliderAngle("Rotar respecto a Y", &it->anguloRotacionY)) it->update = true; if (SliderAngle("Rotar respecto a Z", &it->anguloRotacionZ)) it->update = true; if (it->update) { //para evitar desperdicio de recursos, solo recalcular los vertices si hubo un cambio it->update = false; it->transformar(); } if (Button("Eliminar objeto")) it->eliminado = true; }