Waitrud Weber’s blog

things and reminders for memories

3d: WindowsAPI: Windows-make: Curve Lines, we could temporarily effect Linear C2:

f:id:Waitrud_Weber:20191231075317p:plain

.\vCurveCalculation.cpp  Tue Dec 31 07:51:54 2019

  1 :#include 
  2 :#include 
  3 :#include  // ADD: 20191230
  4 :
  5 :#include "array_counter.h"	// ADD: 20191230
  6 :#include "sender.h"			// ADD: 20191230
  7 :#include "Print.h"			// ADD: 20191230
  8 :
  9 :#include "vPoint.h"
 10 :#include "vLine.h"
 11 :#include "vCalculation.h"
 12 :#include "vCurveCalculation.h"
 13 :
 14 ://
 15 ://
 16 ://
 17 ://
 18 ://
 19 :vPoint* vCurveCalculation::BattleField (vPoint* p1, vPoint* p2, vPoint* p3, vPoint* p4, float t) {
 20 :	vCalculation* calc = nullptr;
 21 :
 22 :	printf("vCurveCalculation::BattleField: |%p|%p|%p|%p|", p1, p2, p3, p4 );
 23 :	// calculation, revisement
 24 :	float tt = t*t;
 25 :	float c=2.0f;
 26 :
 27 :	// Linear
 28 :	vPoint* p5 = calc->scalize( p1, (1.0f - t) );	// anchor p1
 29 :	vPoint* p6 = calc->scalize ( p4, t ); 			// anchor p4
 30 :
 31 :	vPoint* point = calc->add ( p5, p6 );
 32 :
 33 :	//consider, p2 and p3 which are controls points.
 34 :	// Curve
 35 :	// if t=0:
 36 :	// curve_point=p1:
 37 :	// p2=0:
 38 :	// p3=0:
 39 :	// if t=1:
 40 :	// curve_point=p4:
 41 :	// p2=0:
 42 :	// p3=0:
 43 :	float graph = -( 1.0 /(0.5*0.5))*( t - 0.5 )*( t - 0.5 ) + 1.0;
 44 :	vPoint* p7 =  calc->subtract ( p2, p1 );
 45 :	vPoint* p8 =  calc->subtract ( p3, p4 );
 46 :	vPoint* p9 =  calc->scalize (  p7,  graph );
 47 :	vPoint* p10 = calc->scalize (  p8,  graph );
 48 :	vPoint* curve_point_001 = calc->add ( p9, p10 );
 49 :	vPoint* curve_point = calc->scalize( curve_point_001, 0.5f );
 50 :
 51 :	vPoint* temp = calc->add( point, p9 );
 52 :
 53 :	// Linear + Curve: Blend
 54 :	// Debug
 55 :	//vPoint* blend_001 = calc->add( curve_point, point );
 56 :	vPoint* blend_001 = calc->add( curve_point, point );
 57 :	vPoint* blend = calc->scalize( blend_001, 0.5f);
 58 :
 59 :	level_error_msg = 2;
 60 :	// Calculated points printed.
 61 :	log_msg_003("p7=");
 62 :	p7->print();
 63 :	log_msg_003("p8=");
 64 :	p8->print();
 65 :
 66 :	log_msg_003("curve_point=");
 67 :	curve_point->print();
 68 :	log_msg_003("blend=");
 69 :	blend->print();
 70 :	log_msg_003("blend_001=");
 71 :	blend_001->print();
 72 :	log_msg_003("point=");
 73 :	point->print();
 74 :	log_msg_003("t=%f graph=%f", t, graph);
 75 :	level_error_msg = 3;
 76 :
 77 :
 78 :	printf("vCurveCalculation::BattleField: |%p|\r\n", blend );
 79 :
 80 :	//if ( t>0.8 ) 	exit(-1); //20191230
 81 :
 82 ://	return point;
 83 ://	return curve_point;
 84 :	return temp;
 85 :}
 86 :
 87 :// p1: Anchor
 88 :// p2: setting controls
 89 ://
 90 :// p3: Anchor(next)
 91 :// p4: setting controls
 92 ://
 93 ://      vCurveCalculation
 94 ://                         Position 
 95 :/* vPoint* vCurveCalculation::Position (vPoint* p1, vPoint* p2, vPoint p3, vPoint* p4, float t) {
 96 :	vCalculation* calc = nullptr;
 97 :
 98 :	// calculation, revisement
 99 :	float tt = t*t;
100 :
101 :	vPoint* p5 = calc->multiple ( p1, 1 - tt );
102 :	vPoint* p6 = calc->multiple ( p3, tt );
103 :
104 :	vPoint point calc->add ( p5, p6 );
105 :
106 :	//consider, p2 and p3 which is controls point.
107 :
108 :	return point;
109 :}*/
110 :

 

computergraphics-abjmptm.blogspot.com