Ответы пользователя по тегу C++
  • Почему проект не видит функции main?

    @Quark_Hell Автор вопроса
    C++ программист
    Нашёл причину ошибки, спасибо orfelin
    У меня была shared библиотека, а не static
    Ответ написан
    Комментировать
  • Почему ближайшие точки определяются неправильно?

    @Quark_Hell Автор вопроса
    C++ программист
    Для будущих поколений вот рабочая версия:
    static inline bool ClosetPointBetweenAxis(std::pair<Vector3, Vector3> axis1,std::pair<Vector3, Vector3> axis2, Vector3& point) {
    		Vector3 axis1Vector = Vector3::GetNormalize(axis1.second - axis1.first);
    		Vector3 axis2Vector = Vector3::GetNormalize(axis2.second - axis2.first);
    
    		float normU = Vector3::DotProduct(axis1Vector, axis2Vector);
    
    		//parallel
    		if (fabs(normU) == 1)
    			return false;
    
    		Vector3 cn = Vector3::GetNormalize(Vector3::CrossProduct(axis2Vector ,axis1Vector));
    		Vector3 projection = axis1Vector * Vector3::DotProduct(axis2.first - axis1.first, axis1Vector);
    		Vector3 rejection = axis2.first - axis1.first - axis1Vector * Vector3::DotProduct(axis2.first - axis1.first, axis1Vector) - cn * Vector3::DotProduct(axis2.first - axis1.first, cn);
    		Vector3 closetApproach = axis2.first - axis2Vector * Vector3::GetMagnitude(rejection) / Vector3::DotProduct(axis2Vector, Vector3::GetNormalize(rejection));
    
    		point = closetApproach;
    		return true;
    	}


    взята отсюда
    Ответ написан
    Комментировать
  • Что добавить в код, чтобы текстовая строка прорисовывалась в окне с дополнительным эффектами(Указано ниже с какими, Win 32 C++)?

    @Quark_Hell
    C++ программист
    На счёт рисовки вдоль кривой, была в универе недавно похожая задача, только там нужно было нарисовать график функции на промежутке.
    Вот можешь глянуть код:

    define SCREENW 119
    #define SCREENH 30
    
    void DrawFunction(FILE* fout, double a, double b, double (*f)
        (double))
    {
        char screen[SCREENW][SCREENH];
        double x, y[SCREENW];
        double ymin = 0, ymax = 0;
        double hx, hy;
        int i, j;
        int xz, yz;
    
        hx = (b - a) / (SCREENW - 1);
        for (i = 0, x = a; i < SCREENW; ++i, x += hx) {
    
            y[i] = f(x);
    
            if (y[i] < ymin) ymin = y[i];
            if (y[i] > ymax) ymax = y[i];
        }
        hy = (ymax - ymin) / (SCREENH - 1);
        yz = (int)floor(ymax / hy + 0.5);
        xz = (int)floor(-a / hx + 0.5);
    
        for (j = 0; j < SCREENH; ++j) {
            for (i = 0; i < SCREENW; ++i) {
                if (j == yz && i == xz)
                    screen[i][j] = '+';
                else if (j == yz)
                    screen[i][j] = '-';
                else if (i == xz)
                    screen[i][j] = '|';
                else
                    screen[i][j] = ' ';
    
            }
        }
        for (i = 0; i < SCREENW; ++i) {
            j = (int)floor((ymax - y[i]) / hy + 0.5);
            screen[i][j] = '.';
        }
    
        for (j = 0; j < SCREENH; ++j) {
            for (i = 0; i < SCREENW; ++i)
                fputc(screen[i][j], fout);
            fprintf(fout, "\n");
        }
    }
    
    double FirstFunct(double x)
    {
        return pow(log10(sin(4 * x) + 1), 2);
    }
    
    void A1() {
    //Промежуток тут от 0 до 2
    //Уравнение функции записано в FirstFunct
        DrawFunction(stdout, 0, 2.0, FirstFunct);
    }

    Вот вывод в консоли и в гугл таблицах соответственно:
    63bc27aeb6da1944780971.jpeg

    Однако учти, что символ в консоли имеет четкую ЦЕЛОЧИСЛЕННУЮ позицию (COORD)

    Получается делаем вывод, что символ не может находиться где-то посередине
    Ответ написан
    Комментировать
  • Как рисовать символами в терминале?

    @Quark_Hell
    C++ программист
    Вот мой проект,глянь там классы ConsoleInfo и Draw.

    https://github.com/Quark-Hell/ChallengeGame

    Однако у меня класс Draw рисует 1D фигуры,так что тебе нужно будет немного переписать этот класс.
    Ответ написан
  • Почему возникает Unresolved external symbol?

    @Quark_Hell Автор вопроса
    C++ программист
    Моё решение:
    Добавил в определение КАЖДОГО метода в .cpp следующий код:"__declspec(dllexport)"
    В целом это выглядит примерно так:
    public:
       __declspec(dllexport) static void DrawObject(COORD coord, GameObject object) {
    //Your code...
    }
    Ответ написан
    Комментировать