1. 程式人生 > >畫直線 水平夾角的 帶箭頭的

畫直線 水平夾角的 帶箭頭的

                                                           畫直線  水平夾角的   帶箭頭的

#include <graphics.h>
#include <math.h>


#define PI 3.14159265
static double degree_to_radian(double degree)
{
    double radian = degree * PI / 180.0;
    return radian;
}

static double   get_distance(double   start_x, double   start_y, double   end_x, double   end_y)
{
    double   result, sqrt_f;
    result = (start_x-end_x)*(start_x-end_x)+(start_y-end_y)*(start_y-end_y);
    sqrt_f = sqrt(result);
    return   sqrt_f;
}


static void draw_arraw_line_imp(double  s_x, double  s_y, double  e_x, double  e_y, double length, double angle)
{
    double   tmp_x;
    double   tmp_y;
    double   x1;
    double   y1;
    double   x2;
    double   y2;

    double distance = get_distance(s_x,s_y,e_x,e_y);

    tmp_x = e_x + (s_x-e_x)*length/distance;
    tmp_y = e_y + (s_y-e_y)*length/distance;
    x1 = (tmp_x-e_x)*cos(-angle/2) - (tmp_y-e_y)*sin(-angle/2) + e_x;
    y1 = (tmp_y-e_y)*cos(-angle/2) + (tmp_x-e_x)*sin(-angle/2) + e_y;
    x2 = (tmp_x-e_x)*cos(angle/2) - (tmp_y-e_y)*sin(angle/2) + e_x;
    y2 = (tmp_y-e_y)*cos(angle/2) + (tmp_x-e_x)*sin(angle/2) + e_y;

    line(x1, y1, e_x, e_y);
    line(x2, y2, e_x, e_y);
}

static draw_arraw_line(double  s_x, double  s_y, double  e_x, double  e_y)
{
    line(s_x, s_y, e_x, e_y);
    draw_arraw_line_imp(s_x, s_y, e_x, e_y, 15, degree_to_radian(20));
}


static void draw_arraw_line_with_angle(double start_x, double start_y, double length, double degree)
{
    double delt_x, delt_y, end_x, end_y, radian;

    radian = degree_to_radian(degree);
    delt_x = length * cos(radian);
    delt_y = length * sin(radian);

    end_x = start_x + delt_x;
    end_y = start_y - delt_y;

    draw_arraw_line(start_x, start_y, end_x, end_y);
}

int main()
{
    int   driver=DETECT;        
    int   mode;
    initgraph(&driver,&mode,"d://tc");      
    cleardevice();                    

    draw_arraw_line_with_angle(500, 300, 50, 30);
    draw_arraw_line_with_angle(500, 300, 50, 45);
    draw_arraw_line_with_angle(500, 300, 50, 90);
    draw_arraw_line_with_angle(500, 300, 50, 180);
    draw_arraw_line_with_angle(500, 300, 50, 270);
    draw_arraw_line_with_angle(500, 300, 50, 300);
    draw_arraw_line_with_angle(500, 300, 50, 10);
    draw_arraw_line_with_angle(500, 300, 50, 15);
    draw_arraw_line_with_angle(500, 300, 50, 20);
    draw_arraw_line_with_angle(500, 300, 50, 60);
    draw_arraw_line_with_angle(500, 300, 50, 80);
    getch();

    closegraph();                      
    return 0;
}

相關推薦

直線 水平夾角箭頭

                                                           畫直線  水平夾角的   帶箭頭的 #include <graphics.h> #include <math.h> #define P

利用高德地圖通過給定坐標點箭頭方向的路徑

api size null box tool bapi 說了 劃線 加載完成 這是到新公司以後接到的第一個任務(測試任務),嘿嘿,第一次畫地圖,一開始整個人都方了。。。方過了一個周末,還好兩天差不多就弄出來了。感謝互聯網啊,讓我這種渣渣得以繼續生存,但是也意識到自己編碼能力

【unity實用技能】Unity一條箭頭的線

無提供函數方便使用 private void DrawArrow(Vector2 from, Vector2 to, Color color) { Handles.BeginGUI(); Handles.color = color; Handle

Matlab任意兩點之間繪製箭頭直線

工作環境(藍色粗體字為特別注意內容) 1,開發環境:Matlab 2012b win32 2,程式語言:Matlab 最近需要使用matlab繪製帶箭頭的直線,發現如下方式可以繪製帶箭頭的直線 1.呼叫annotation函式繪製二維箭頭annotation函式用來在當前圖形視窗建立

如何用matlab出有向圖(箭頭

close all,clear,clc; cm =[       0     10     0 &nb

使用SVG繪製箭頭直線

<!DOCTYPE html> <html> <body> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <defs> <marker id="arrow" 

Qt學習筆記:一條箭頭的線

方法1:常規實現 帶箭頭的線,在很多地方都會用到,以致於一開始我認為Qt會提供這樣一個類。。。沒想到的是Qt不僅沒有提供相關的類,自己實現的時候還頗為複雜。。 其實我比較不理解。。為什麼Qt不提供一個帶箭頭的線的類呢。。為什麼為什麼呢?這個應該不少人會用到吧

qt旋轉的箭頭的線段

tesb::tesb(QWidget *parent) : QWidget(parent) { ui.setupUi(this); } void tesb::DrawCustomLine(QP

iOS重寫drawRect方法實現箭頭的View

hat oid line wid addition arrow memory alt ins 創建一個UIView的子類,重寫drawRect方法可以實現不規則形狀的View,這裏提供一個帶箭頭View的實現代碼: ArrowView.h #import <UIKi

css三角形以及實現三角的陰影效果

什麽 覆蓋 parent jpg 利用 ron 通過 技術 定位 先上圖看效果 1.三角形怎麽畫 通過控制四周邊框實現,想要紅色區域三角形的就設置其他三邊顏色設置為transparent,想要什麽什麽三角形就其他邊設置為透明顏色即可. 2.三角形畫好後,利用偽類,定位

單文件中直線

之前需要將單文件分成兩個框 1.給對話方塊新增四個編輯框和一個按鈕。右鍵單擊編輯框,新增變數,類別為value,型別double,變數名m_startlinex。 2.在類檢視中,對話方塊類中右鍵在對話方塊標頭檔案中新增函式OnDrawline,同時在對話

css實現橫向箭頭步驟流程效果

 通過純css實現圓角的步驟流程效果,擴充套件性強,可以隨意增加減少數量,相容性ie6+。 具體程式碼: 1 <style type="text/css"> 2 ul{margin:0px; padding:0px; list-style:none;} 3 .wrap{

gnuplot 跟據資料直線

#load '/Users/QY/Desktop/data.plt'   set xlabel  font "Helvetica,16"   #設定座標軸x標題的字型 set ylabel  font "Helvetica,16"  

微信小程式列表項的右側箭頭怎麼做?

在.wxml檔案中新增一個標籤<view class='arrow'/> <view class='list'> <view class='list1'> <image src='../../images/list.jpg'>

Matlab直線、圓、球

1、畫直線連線(x1,y1),(x2,y2) function [ ] = plot_line(x1,y1,x2,y2) plot([x1,x2],[y1,y2],'r-'); xlabel('x'); % x軸註解   ylabel('y'); % y軸註解   end

HoughLines()函式 直線在影象上

#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std; int main(

如何用visio直線同時去掉跨線

1、最近在寫論文,用visio畫圖的過程中發現連線線都是折線,如下圖1所示。那麼如何才能畫出如圖2所示的直線來呢?                         

MUI-list(列表),普通列表、箭頭列表、數字角標列表、圖文列表

本文主要介紹list(列表)的幾種展現形式:普通列表、帶箭頭列表、帶數字角標列表、帶圖文列表 效果圖如下: 1、普通列表:只需要在ul節點上新增.mui-table-view類、在li節點上新增.mui-table-view-cell類即可 2、帶箭頭列表:若右側需要增加導航箭

【計算機圖形】直線

由於計算機的解析度有限,計算機圖形只是看起來平滑,放大後就能看到階梯狀的鋸齒。(可以開啟windows畫圖檢驗)。所以畫線畫圓的本質問題就是下一個點取(x + 1, y )或(x, y + 1)還是(x + 1, y + 1)? 一、畫直線: 1. DDA(

Bresenham演算法直線

void Bresenham_line(CDC *pDC, int x0, int y0, int x1, int y1, long color) { int dx = abs(x1