亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tktrig.c

?? linux系統下的音頻通信
?? C
?? 第 1 頁 / 共 3 頁
字號:
 * Side effects: *	None. * *-------------------------------------------------------------- */voidTkBezierPoints(control, numSteps, coordPtr)    double control[];			/* Array of coordinates for four					 * control points:  x0, y0, x1, y1,					 * ... x3 y3. */    int numSteps;			/* Number of curve points to					 * generate.  */    register double *coordPtr;		/* Where to put new points. */{    int i;    double u, u2, u3, t, t2, t3;    for (i = 1; i <= numSteps; i++, coordPtr += 2) {	t = ((double) i)/((double) numSteps);	t2 = t*t;	t3 = t2*t;	u = 1.0 - t;	u2 = u*u;	u3 = u2*u;	coordPtr[0] = control[0]*u3		+ 3.0 * (control[2]*t*u2 + control[4]*t2*u) + control[6]*t3;	coordPtr[1] = control[1]*u3		+ 3.0 * (control[3]*t*u2 + control[5]*t2*u) + control[7]*t3;    }}/* *-------------------------------------------------------------- * * TkMakeBezierCurve -- * *	Given a set of points, create a new set of points that fit *	parabolic splines to the line segments connecting the original *	points.  Produces output points in either of two forms. * *	Note: in spite of this procedure's name, it does *not* generate *	Bezier curves.  Since only three control points are used for *	each curve segment, not four, the curves are actually just *	parabolic. * * Results: *	Either or both of the xPoints or dblPoints arrays are filled *	in.  The return value is the number of points placed in the *	arrays.  Note:  if the first and last points are the same, then *	a closed curve is generated. * * Side effects: *	None. * *-------------------------------------------------------------- */intTkMakeBezierCurve(canvas, pointPtr, numPoints, numSteps, xPoints, dblPoints)    Tk_Canvas canvas;			/* Canvas in which curve is to be					 * drawn. */    double *pointPtr;			/* Array of input coordinates:  x0,					 * y0, x1, y1, etc.. */    int numPoints;			/* Number of points at pointPtr. */    int numSteps;			/* Number of steps to use for each					 * spline segments (determines					 * smoothness of curve). */    XPoint xPoints[];			/* Array of XPoints to fill in (e.g.					 * for display.  NULL means don't					 * fill in any XPoints. */    double dblPoints[];			/* Array of points to fill in as					 * doubles, in the form x0, y0,					 * x1, y1, ....  NULL means don't					 * fill in anything in this form. 					 * Caller must make sure that this					 * array has enough space. */{    int closed, outputPoints, i;    int numCoords = numPoints*2;    double control[8];    /*     * If the curve is a closed one then generate a special spline     * that spans the last points and the first ones.  Otherwise     * just put the first point into the output.     */    outputPoints = 0;    if ((pointPtr[0] == pointPtr[numCoords-2])	    && (pointPtr[1] == pointPtr[numCoords-1])) {	closed = 1;	control[0] = 0.5*pointPtr[numCoords-4] + 0.5*pointPtr[0];	control[1] = 0.5*pointPtr[numCoords-3] + 0.5*pointPtr[1];	control[2] = 0.167*pointPtr[numCoords-4] + 0.833*pointPtr[0];	control[3] = 0.167*pointPtr[numCoords-3] + 0.833*pointPtr[1];	control[4] = 0.833*pointPtr[0] + 0.167*pointPtr[2];	control[5] = 0.833*pointPtr[1] + 0.167*pointPtr[3];	control[6] = 0.5*pointPtr[0] + 0.5*pointPtr[2];	control[7] = 0.5*pointPtr[1] + 0.5*pointPtr[3];	if (xPoints != NULL) {	    Tk_CanvasDrawableCoords(canvas, control[0], control[1],		    &xPoints->x, &xPoints->y);	    TkBezierScreenPoints(canvas, control, numSteps, xPoints+1);	    xPoints += numSteps+1;	}	if (dblPoints != NULL) {	    dblPoints[0] = control[0];	    dblPoints[1] = control[1];	    TkBezierPoints(control, numSteps, dblPoints+2);	    dblPoints += 2*(numSteps+1);	}	outputPoints += numSteps+1;    } else {	closed = 0;	if (xPoints != NULL) {	    Tk_CanvasDrawableCoords(canvas, pointPtr[0], pointPtr[1],		    &xPoints->x, &xPoints->y);	    xPoints += 1;	}	if (dblPoints != NULL) {	    dblPoints[0] = pointPtr[0];	    dblPoints[1] = pointPtr[1];	    dblPoints += 2;	}	outputPoints += 1;    }    for (i = 2; i < numPoints; i++, pointPtr += 2) {	/*	 * Set up the first two control points.  This is done	 * differently for the first spline of an open curve	 * than for other cases.	 */	if ((i == 2) && !closed) {	    control[0] = pointPtr[0];	    control[1] = pointPtr[1];	    control[2] = 0.333*pointPtr[0] + 0.667*pointPtr[2];	    control[3] = 0.333*pointPtr[1] + 0.667*pointPtr[3];	} else {	    control[0] = 0.5*pointPtr[0] + 0.5*pointPtr[2];	    control[1] = 0.5*pointPtr[1] + 0.5*pointPtr[3];	    control[2] = 0.167*pointPtr[0] + 0.833*pointPtr[2];	    control[3] = 0.167*pointPtr[1] + 0.833*pointPtr[3];	}	/*	 * Set up the last two control points.  This is done	 * differently for the last spline of an open curve	 * than for other cases.	 */	if ((i == (numPoints-1)) && !closed) {	    control[4] = .667*pointPtr[2] + .333*pointPtr[4];	    control[5] = .667*pointPtr[3] + .333*pointPtr[5];	    control[6] = pointPtr[4];	    control[7] = pointPtr[5];	} else {	    control[4] = .833*pointPtr[2] + .167*pointPtr[4];	    control[5] = .833*pointPtr[3] + .167*pointPtr[5];	    control[6] = 0.5*pointPtr[2] + 0.5*pointPtr[4];	    control[7] = 0.5*pointPtr[3] + 0.5*pointPtr[5];	}	/*	 * If the first two points coincide, or if the last	 * two points coincide, then generate a single	 * straight-line segment by outputting the last control	 * point.	 */	if (((pointPtr[0] == pointPtr[2]) && (pointPtr[1] == pointPtr[3]))		|| ((pointPtr[2] == pointPtr[4])		&& (pointPtr[3] == pointPtr[5]))) {	    if (xPoints != NULL) {		Tk_CanvasDrawableCoords(canvas, control[6], control[7],			&xPoints[0].x, &xPoints[0].y);		xPoints++;	    }	    if (dblPoints != NULL) {		dblPoints[0] = control[6];		dblPoints[1] = control[7];		dblPoints += 2;	    }	    outputPoints += 1;	    continue;	}	/*	 * Generate a Bezier spline using the control points.	 */	if (xPoints != NULL) {	    TkBezierScreenPoints(canvas, control, numSteps, xPoints);	    xPoints += numSteps;	}	if (dblPoints != NULL) {	    TkBezierPoints(control, numSteps, dblPoints);	    dblPoints += 2*numSteps;	}	outputPoints += numSteps;    }    return outputPoints;}/* *-------------------------------------------------------------- * * TkMakeBezierPostscript -- * *	This procedure generates Postscript commands that create *	a path corresponding to a given Bezier curve. * * Results: *	None.  Postscript commands to generate the path are appended *	to interp->result. * * Side effects: *	None. * *-------------------------------------------------------------- */voidTkMakeBezierPostscript(interp, canvas, pointPtr, numPoints)    Tcl_Interp *interp;			/* Interpreter in whose result the					 * Postscript is to be stored. */    Tk_Canvas canvas;			/* Canvas widget for which the					 * Postscript is being generated. */    double *pointPtr;			/* Array of input coordinates:  x0,					 * y0, x1, y1, etc.. */    int numPoints;			/* Number of points at pointPtr. */{    int closed, i;    int numCoords = numPoints*2;    double control[8];    char buffer[200];    /*     * If the curve is a closed one then generate a special spline     * that spans the last points and the first ones.  Otherwise     * just put the first point into the path.     */    if ((pointPtr[0] == pointPtr[numCoords-2])	    && (pointPtr[1] == pointPtr[numCoords-1])) {	closed = 1;	control[0] = 0.5*pointPtr[numCoords-4] + 0.5*pointPtr[0];	control[1] = 0.5*pointPtr[numCoords-3] + 0.5*pointPtr[1];	control[2] = 0.167*pointPtr[numCoords-4] + 0.833*pointPtr[0];	control[3] = 0.167*pointPtr[numCoords-3] + 0.833*pointPtr[1];	control[4] = 0.833*pointPtr[0] + 0.167*pointPtr[2];	control[5] = 0.833*pointPtr[1] + 0.167*pointPtr[3];	control[6] = 0.5*pointPtr[0] + 0.5*pointPtr[2];	control[7] = 0.5*pointPtr[1] + 0.5*pointPtr[3];	sprintf(buffer, "%.15g %.15g moveto\n%.15g %.15g %.15g %.15g %.15g %.15g curveto\n",		control[0], Tk_CanvasPsY(canvas, control[1]),		control[2], Tk_CanvasPsY(canvas, control[3]),		control[4], Tk_CanvasPsY(canvas, control[5]),		control[6], Tk_CanvasPsY(canvas, control[7]));    } else {	closed = 0;	control[6] = pointPtr[0];	control[7] = pointPtr[1];	sprintf(buffer, "%.15g %.15g moveto\n",		control[6], Tk_CanvasPsY(canvas, control[7]));    }    Tcl_AppendResult(interp, buffer, (char *) NULL);    /*     * Cycle through all the remaining points in the curve, generating     * a curve section for each vertex in the linear path.     */    for (i = numPoints-2, pointPtr += 2; i > 0; i--, pointPtr += 2) {	control[2] = 0.333*control[6] + 0.667*pointPtr[0];	control[3] = 0.333*control[7] + 0.667*pointPtr[1];	/*	 * Set up the last two control points.  This is done	 * differently for the last spline of an open curve	 * than for other cases.	 */	if ((i == 1) && !closed) {	    control[6] = pointPtr[2];	    control[7] = pointPtr[3];	} else {	    control[6] = 0.5*pointPtr[0] + 0.5*pointPtr[2];	    control[7] = 0.5*pointPtr[1] + 0.5*pointPtr[3];	}	control[4] = 0.333*control[6] + 0.667*pointPtr[0];	control[5] = 0.333*control[7] + 0.667*pointPtr[1];	sprintf(buffer, "%.15g %.15g %.15g %.15g %.15g %.15g curveto\n",		control[2], Tk_CanvasPsY(canvas, control[3]),		control[4], Tk_CanvasPsY(canvas, control[5]),		control[6], Tk_CanvasPsY(canvas, control[7]));	Tcl_AppendResult(interp, buffer, (char *) NULL);    }}/* *-------------------------------------------------------------- * * TkGetMiterPoints -- * *	Given three points forming an angle, compute the *	coordinates of the inside and outside points of *	the mitered corner formed by a line of a given *	width at that angle. * * Results: *	If the angle formed by the three points is less than *	11 degrees then 0 is returned and m1 and m2 aren't *	modified.  Otherwise 1 is returned and the points at *	m1 and m2 are filled in with the positions of the points *	of the mitered corner. * * Side effects: *	None. * *-------------------------------------------------------------- */intTkGetMiterPoints(p1, p2, p3, width, m1, m2)    double p1[];		/* Points to x- and y-coordinates of point				 * before vertex. */    double p2[];		/* Points to x- and y-coordinates of vertex				 * for mitered joint. */    double p3[];		/* Points to x- and y-coordinates of point				 * after vertex. */    double width;		/* Width of line.  */    double m1[];		/* Points to place to put "left" vertex				 * point (see as you face from p1 to p2). */    double m2[];		/* Points to place to put "right" vertex				 * point. */{    double theta1;		/* Angle of segment p2-p1. */    double theta2;		/* Angle of segment p2-p3. */    double theta;		/* Angle between line segments (angle				 * of joint). */    double theta3;		/* Angle that bisects theta1 and				 * theta2 and points to m1. */    double dist;		/* Distance of miter points from p2. */    double deltaX, deltaY;	/* X and y offsets cooresponding to				 * dist (fudge factors for bounding				 * box). */    double p1x, p1y, p2x, p2y, p3x, p3y;    static double elevenDegrees = (11.0*2.0*PI)/360.0;    /*     * Round the coordinates to integers to mimic what happens when the     * line segments are displayed; without this code, the bounding box     * of a mitered line can be miscomputed greatly.     */    p1x = floor(p1[0]+0.5);    p1y = floor(p1[1]+0.5);    p2x = floor(p2[0]+0.5);    p2y = floor(p2[1]+0.5);    p3x = floor(p3[0]+0.5);    p3y = floor(p3[1]+0.5);    if (p2y == p1y) {	theta1 = (p2x < p1x) ? 0 : PI;    } else if (p2x == p1x) {	theta1 = (p2y < p1y) ? PI/2.0 : -PI/2.0;    } else {	theta1 = atan2(p1y - p2y, p1x - p2x);    }    if (p3y == p2y) {	theta2 = (p3x > p2x) ? 0 : PI;    } else if (p3x == p2x) {	theta2 = (p3y > p2y) ? PI/2.0 : -PI/2.0;    } else {	theta2 = atan2(p3y - p2y, p3x - p2x);    }    theta = theta1 - theta2;    if (theta > PI) {	theta -= 2*PI;    } else if (theta < -PI) {	theta += 2*PI;    }    if ((theta < elevenDegrees) && (theta > -elevenDegrees)) {	return 0;    }    dist = 0.5*width/sin(0.5*theta);    if (dist < 0.0) {	dist = -dist;    }    /*     * Compute theta3 (make sure that it points to the left when     * looking from p1 to p2).     */    theta3 = (theta1 + theta2)/2.0;    if (sin(theta3 - (theta1 + PI)) < 0.0) {	theta3 += PI;    }    deltaX = dist*cos(theta3);    m1[0] = p2x + deltaX;    m2[0] = p2x - deltaX;    deltaY = dist*sin(theta3);    m1[1] = p2y + deltaY;    m2[1] = p2y - deltaY;    return 1;}/* *-------------------------------------------------------------- * * TkGetButtPoints -- * *	Given two points forming a line segment, compute the *	coordinates of two endpoints of a rectangle formed by *	bloating the line segment until it is width units wide. * * Results: *	There is no return value.  M1 and m2 are filled in to *	correspond to m1 and m2 in the diagram below: * *		   ----------------* m1 *				   | *		p1 *---------------* p2 *				   | *		   ----------------* m2 * *	M1 and m2 will be W units apart, with p2 centered between *	them and m1-m2 perpendicular to p1-p2.  However, if *	"project" is true then m1 and m2 will be as follows: * *		   -------------------* m1 *				  p2  | *		p1 *---------------*  | *				      | *		   -------------------* m2 * *	In this case p2 will be width/2 units from the segment m1-m2. * * Side effects: *	None. * *-------------------------------------------------------------- */voidTkGetButtPoints(p1, p2, width, project, m1, m2)    double p1[];		/* Points to x- and y-coordinates of point				 * before vertex. */    double p2[];		/* Points to x- and y-coordinates of vertex				 * for mitered joint. */    double width;		/* Width of line.  */    int project;		/* Non-zero means project p2 by an additional				 * width/2 before computing m1 and m2. */    double m1[];		/* Points to place to put "left" result				 * point, as you face from p1 to p2. */    double m2[];		/* Points to place to put "right" result				 * point. */{    double length;		/* Length of p1-p2 segment. */    double deltaX, deltaY;	/* Increments in coords. */    width *= 0.5;    length = hypot(p2[0] - p1[0], p2[1] - p1[1]);    if (length == 0.0) {	m1[0] = m2[0] = p2[0];	m1[1] = m2[1] = p2[1];    } else {	deltaX = -width * (p2[1] - p1[1]) / length;	deltaY = width * (p2[0] - p1[0]) / length;	m1[0] = p2[0] + deltaX;	m2[0] = p2[0] - deltaX;	m1[1] = p2[1] + deltaY;	m2[1] = p2[1] - deltaY;	if (project) {	    m1[0] += deltaY;	    m2[0] += deltaY;	    m1[1] -= deltaX;	    m2[1] -= deltaX;	}    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产影片| 毛片一区二区三区| 免费在线欧美视频| 99久久国产综合精品色伊| 欧美一区二区三区四区高清| 亚洲私人影院在线观看| 久久精品国产亚洲高清剧情介绍| 91蜜桃传媒精品久久久一区二区| 欧美成人a在线| 性感美女极品91精品| 国产mv日韩mv欧美| 精品福利一区二区三区免费视频| 亚洲成人av电影在线| 粉嫩av一区二区三区在线播放| 日韩精品专区在线影院重磅| 亚洲成人你懂的| 91黄色免费版| 亚洲卡通动漫在线| 99国产精品久久久久| 国产视频一区在线播放| 日本不卡在线视频| 7777女厕盗摄久久久| 夜夜夜精品看看| 91年精品国产| 亚洲欧美日韩电影| 91视频免费观看| 亚洲靠逼com| 色94色欧美sute亚洲线路二| 国产精品成人免费| 91亚洲资源网| 亚洲毛片av在线| 欧美亚洲综合在线| 午夜精品久久久久久| 欧美伊人久久久久久久久影院 | 亚洲成av人片| 欧美视频一二三区| 一区二区三区不卡视频| 色成年激情久久综合| 亚洲综合av网| 91精品在线免费| 看电影不卡的网站| 久久久美女毛片| 成人丝袜视频网| 亚洲免费观看高清完整版在线观看熊| 91片在线免费观看| 亚洲制服欧美中文字幕中文字幕| 欧美日韩国产高清一区二区| 亚洲v中文字幕| 精品噜噜噜噜久久久久久久久试看 | 高清不卡一区二区| 最新国产の精品合集bt伙计| 91免费看视频| 日韩成人dvd| 国产婷婷色一区二区三区| fc2成人免费人成在线观看播放| 亚洲三级在线观看| 欧美日韩一区不卡| 激情五月婷婷综合| 一区免费观看视频| 精品视频1区2区| 国产揄拍国内精品对白| 日韩理论片中文av| 欧美一区二区视频在线观看2020 | 亚洲va韩国va欧美va精品| 欧美一区二区私人影院日本| 国产激情精品久久久第一区二区| 亚洲欧美日韩在线不卡| 在线综合+亚洲+欧美中文字幕| 国产精品一区二区你懂的| 亚洲欧美另类小说视频| 日韩情涩欧美日韩视频| 一本色道久久综合亚洲91 | 亚洲高清在线精品| 国产亚洲成年网址在线观看| 色综合久久中文字幕综合网 | 亚洲成在人线免费| 国产欧美一区二区在线| 欧美主播一区二区三区| 国产福利一区在线| 日本伊人午夜精品| 亚洲区小说区图片区qvod| 日韩精品在线看片z| 在线观看日韩高清av| 国产不卡视频一区| 蜜桃视频在线一区| 亚洲精品ww久久久久久p站| 久久一日本道色综合| 精品视频在线免费| 色狠狠av一区二区三区| 国产激情一区二区三区四区| 日韩精品成人一区二区三区| 亚洲啪啪综合av一区二区三区| 26uuu亚洲综合色| 欧美一区永久视频免费观看| 色婷婷亚洲综合| 不卡视频在线观看| 成人午夜激情片| 精品一区二区在线观看| 日韩av一级片| 亚洲成a人片在线观看中文| 亚洲免费观看视频| 18欧美乱大交hd1984| 中文字幕第一区第二区| 久久久国产精品麻豆| 日韩一级欧美一级| 欧美日韩国产经典色站一区二区三区| 91麻豆国产精品久久| 成人av网站免费观看| 国产精品一二三区在线| 国产在线精品免费| 九九国产精品视频| 精品无人码麻豆乱码1区2区 | 无码av免费一区二区三区试看| 亚洲卡通欧美制服中文| 亚洲免费av观看| 亚洲一区在线观看视频| 一区二区三区四区在线播放| 亚洲日本va在线观看| 中文字幕一区二区三区乱码在线| 最好看的中文字幕久久| 亚洲激情在线播放| 午夜激情一区二区三区| 首页亚洲欧美制服丝腿| 日日摸夜夜添夜夜添精品视频| 天堂在线亚洲视频| 久色婷婷小香蕉久久| 国产一区二区在线影院| 高清国产一区二区三区| 91丨九色丨蝌蚪富婆spa| 色噜噜久久综合| 欧美一区午夜精品| 久久先锋影音av鲁色资源网| 99热精品国产| 午夜精品123| 蜜臀av一区二区三区| 激情综合色综合久久| 高清在线不卡av| 色域天天综合网| 欧美精品久久一区二区三区| 日韩精品一区二区三区在线播放| 久久久久国产一区二区三区四区| 中文字幕免费不卡| 亚洲大片精品永久免费| 麻豆高清免费国产一区| 成人精品高清在线| 欧美亚洲综合一区| 久久蜜臀中文字幕| 亚洲精品欧美专区| 蜜臂av日日欢夜夜爽一区| 国产成人啪免费观看软件| 在线欧美日韩精品| 2020日本不卡一区二区视频| 中文字幕佐山爱一区二区免费| 日本亚洲免费观看| 不卡av在线免费观看| 91精品在线免费观看| 国产精品短视频| 免费视频一区二区| 色偷偷久久人人79超碰人人澡| 日韩欧美在线影院| 亚洲乱码国产乱码精品精的特点| 日韩精品一二三区| 99精品欧美一区二区蜜桃免费 | 国产精品美女视频| 亚洲成人1区2区| 成人免费av资源| 欧美大片免费久久精品三p| 亚洲丝袜自拍清纯另类| 久久99国产精品久久99| 欧美三区免费完整视频在线观看| 国产日韩亚洲欧美综合| 石原莉奈在线亚洲三区| 91免费小视频| 国产日产欧美一区| 日本在线播放一区二区三区| 色婷婷久久久亚洲一区二区三区| 久久亚洲精品国产精品紫薇| 亚洲bt欧美bt精品777| 色综合久久综合网97色综合| 久久久亚洲午夜电影| 美国三级日本三级久久99| 欧洲在线/亚洲| 亚洲乱码国产乱码精品精可以看 | 欧美视频一区二区在线观看| 国产精品天干天干在观线| 狠狠狠色丁香婷婷综合久久五月| 欧美精品丝袜中出| 亚洲成人精品一区二区| 色婷婷久久久综合中文字幕| 1区2区3区精品视频| 成人精品高清在线| 中文字幕精品—区二区四季| 国产一区视频在线看| 日韩精品自拍偷拍| 久久不见久久见中文字幕免费| 日韩欧美视频在线| 久久精品国产999大香线蕉| 91精品国产综合久久精品图片| 视频一区二区三区入口| 欧美疯狂做受xxxx富婆|