- 1
++ ++i;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+5
++ ++i;
+2
int a = -1;
while(+a){
if(a == 0) break;
}
+1
void CScene::IncludeObjects()
{
// Reset All.
ExcludeObjects();
// fill Vershiny of piramid...
point3d versh[4];
point3d eye = {IniSet.ptCamPos.x, IniSet.ptCamPos.y, IniSet.ptCamPos.z};
Screen2World(0, 0, versh[0]);
Screen2World(nScreenSzX, 0, versh[1]);
Screen2World(nScreenSzX, nScreenSzY, versh[2]);
Screen2World(0, nScreenSzY, versh[3]);
// Increase before OO...
int ix, sz = parrObjs.Size();
point3d vect;
for(ix = 0; ix < 4; ix++){
sub_vectors(&vect.x, &versh[ix].x, &eye.x);
norm_vect(&vect.x);
scale_vect(&vect.x, 200.f);
versh[ix] = vect;
}
// Create faces of piramid and search collision with it...
point3d Piramid[4][3];
Piramid[0][0] = eye;
Piramid[1][0] = eye;
Piramid[2][0] = eye;
Piramid[3][0] = eye;
Piramid[0][1] = versh[0];
Piramid[0][2] = versh[1];
Piramid[1][1] = versh[1];
Piramid[1][2] = versh[2];
Piramid[2][1] = versh[2];
Piramid[2][2] = versh[3];
Piramid[3][1] = versh[3];
Piramid[3][2] = versh[0];
// Dyadya WALERA!!!!
for(ix = nObjOff; ix < sz; ix++){
CObj3d *pObj = parrObjs.e(ix);
pObj->Transform(FALSE);
point3d ptPos = pObj->GetPosition();
if(IniSet.nIncludeObjectMode == WS_INCLUDE_BARYCENTER){
point3d ptCentr = IniSet.ptCamTarget;
point3d vtVect;
sub_vectors(&vtVect.x, &ptPos.x, &ptCentr.x);
plane plGran;
point3d ptCross;
for(int jx = 0; jx < 4; jx++){
comp_plane_eqn(&plGran.a, &Piramid[jx][0].x, &Piramid[jx][1].x, &Piramid[jx][2].x);
cross_line_plane(vtVect, &plGran.a, ptCentr, ptCross);
float f1, f2;
f1 = plGran.a * ptPos.x + plGran.b * ptPos.y + plGran.c * ptPos.z + plGran.d;
f2 = plGran.a * ptCentr.x + plGran.b * ptCentr.y + plGran.c * ptCentr.z + plGran.d;
if(f1 * f2 < 0.f){
if(point_in_triangle(Piramid[jx][0], Piramid[jx][1], Piramid[jx][2], ptCross)){
ptCross = ConvertPos3D(ptCross);
if(IniSet.bMirrorH){ ptCross.y = -ptCross.y; }
if(IniSet.bMirrorV){ ptCross.x = -ptCross.x; }
if(IniSet.bMirrorD){ ptCross.z = -ptCross.z; }
transform_back_point(&ptCross, &ptCross, &IniSet.mtMatr);
pObj->ptSavedPos = ptCross;
break;
}
}
}
}else{ // XYZ Axes.
point3d vtXYZ[3] = {{1.f, 0.f, 0.f},
{0.f, 1.f, 0.f},
{0.f, 0.f, 1.f}};
BOOL bFound = FALSE;
for(int ax = 0; ax < 3; ax++){
point3d vtVect;
transform_point(&vtVect, &vtXYZ[ax], &IniSet.mtMatr);
for(int jx = 0; jx < 4; jx++){
plane plGran;
comp_plane_eqn(&plGran.a, &Piramid[jx][0].x, &Piramid[jx][1].x, &Piramid[jx][2].x);
point3d ptCentr = IniSet.ptCamTarget;
point3d ptCross;
cross_line_plane(vtVect, &plGran.a, ptPos, ptCross);
float f1, f2;
f1 = plGran.a * ptPos.x + plGran.b * ptPos.y + plGran.c * ptPos.z + plGran.d;
f2 = plGran.a * ptCentr.x + plGran.b * ptCentr.y + plGran.c * ptCentr.z + plGran.d;
point3d vtDif;
sub_vectors(&vtDif.x, &ptCross.x, &IniSet.ptCamPos.x);
if(vec_length(&vtDif.x) < 0.01f){ continue; } // avoid crossing with eye.
Гавнокод: включить все 3Д объекты в экран.
−3
namespace raytracing
{
struct Scene::Implementation
{
std::vector<std::unique_ptr<RenderObject>> renderObjects;
std::vector<Light> lights;
Camera camera;
};
}
Scene::Scene() :
implementation{std::make_unique<Implementation>()}
{
}
void Scene::insertObject(RenderObject* renderObject) noexcept
{
implementation->renderObjects.push_back(std::unique_ptr<RenderObject>{renderObject});
}
const RenderObject* Scene::getIntersectedObject(Ray ray, vec3f* intersectionPoint) const noexcept
{
const auto& renderObjects = implementation->renderObjects;
if (renderObjects.empty())
return nullptr;
struct IntersectionData
{
const RenderObject* renderObject;
float t;
bool isIntersect;
vec3f intersectionPoint;
} temp{};
for (decltype(implementation->renderObjects)::const_iterator iter = renderObjects.cbegin();
iter != renderObjects.cend(); ++iter)
{
IntersectionData intersectionData;
intersectionData.renderObject = (*iter).get();
intersectionData.isIntersect = (*iter)->isIntersect(ray, intersectionData.t,
&intersectionData.intersectionPoint);
if (intersectionData.isIntersect)
{
if (temp.isIntersect)
{
if (temp.t > intersectionData.t)
temp = intersectionData;
}
else
temp = intersectionData;
}
}
if (intersectionPoint)
*intersectionPoint = temp.intersectionPoint;
return temp.renderObject;
}
namespace raytracing
{
struct Renderer::Implementation
{
vec3f trace(const Scene& scene, Ray ray) const noexcept
{
vec3f intersectionPoint;
const RenderObject* const renderObject = scene.getIntersectedObject(ray, &intersectionPoint);
vec3f color{};
if (!renderObject)
return color;
for (Light l : scene.getLights())
{
const Ray lightRay{intersectionPoint, (l.position - intersectionPoint).normalize()};
float brightness = renderObject->getNormal(intersectionPoint).dot(lightRay.direction);
if (brightness < 0.0F)
brightness = 0.0F;
color += renderObject->getColor(intersectionPoint) * 255.0F * brightness;
}
return color;
}
}
}
Сумеете ли вы найти ошибку?
+3
constexpr Vector(Vector&& vector) noexcept :
x(vector.x), y(vector.y), z(vector.z)
{
vector.x = vector.y = vector.z = T();
}
constexpr Vector& operator=(Vector&& vector) noexcept
{
if (this == &vector)
return *this;
x = vector.x;
y = vector.y;
z = vector.z;
vector.x = vector.y = vector.z = T();
return *this;
}
+1
sector_t * s = §ors[secnum];
if (!s->floorplane.isSlope()) s->reflect[sector_t::floor] = arg1/255.f;
if (!s->ceilingplane.isSlope()) sectors[secnum].reflect[sector_t::ceiling] = arg2/255.f;
присвоил переменной и во второй раз не использовал
−3
bool* sdvig_vpravo(bool* mas) {
if (mas[0] == 1 && mas[1] == 0 && mas[2] == 0) {
mas[0] = 0;
mas[1] = 1;
mas[2] = 0;
}
else if (mas[0] == 0 && mas[1] == 1 && mas[2] == 0) {
mas[0] = 0;
mas[1] = 0;
mas[2] = 1;
}
else if (mas[0] == 0 && mas[1] == 0 && mas[2] == 1) {
mas[0] = 1;
mas[1] = 0;
mas[2] = 0;
}
return mas;
}
Кольцевой сдвиг на один элемент булевского массива размерности 3. Возможно удивитесь, но этот великий костыль я сотворил на полном серьезе.
+3
//g++ 4.9.3
#include <iostream>
int main()
{
for(int ang = 0; ang < 360; ang++)
{
int test = ang * 5981849;
std::cout << test << std::endl;
}
}
http://rextester.com/IHBA32841
+1
https://www.google.com/search?q=%D0%B2%D0%BE%D1%80%D0%B5%D1%86%D0%B8%D0%B8
Насрали так, что все ссылки ведут на говнокод.
Как эта херомантия называется в науке?
3.14159265359, это ты придумал слово "вореции"?
+3
#if defined(OSVR_WINDOWS)
static const auto SEARCH_PATH_ENV = "PATH";
static const auto SEARCH_PATH_SEP = ";";
#else
static const auto SEARCH_PATH_ENV = "LD_LIBRARY_PATH";
static const auto SEARCH_PATH_SEP = ":";
#endif
void wrappedPutenv(std::string const &val) {
#ifdef _MSC_VER
_putenv_s(SEARCH_PATH_ENV, val.c_str());
#else // not microsoft runtime specific
auto newValue = SEARCH_PATH_ENV + "=" + val;
// Have to allocate new string because it becomes part of the
// environment.
char *newString = static_cast<char *>(malloc(newValue.size() + 1));
std::copy(begin(newValue), end(newValue), newString);
#endif
}
Момент, когда я считаю, что C++-ный auto -- чистое зло(строка 14).
Код из OSVR-Vive, плагина к OSVR, который работает с HTC Vive.