kk原源碼
① kk是開源飛控嗎
是。kk是一個很有趣的開源飛控,由於其硬體要求低,價格大眾化,所以雖然性能有限,還是有著廣泛的使用群體。我也有一個kk飛控板,並且我下載了kk的源碼進行研究,比較麻煩的是,kk的源碼是用匯編寫的,很多人是看不懂的。

開源飛控介紹
在紛繁復雜的無人機產品中,四旋翼飛行器以其結構簡單、使用方便、成本低廉等優勢,最先進入了大眾的視線。但是,這種飛行器對飛行控制能力的要求是最高的,因此它刺激了大批基於MEMS感測器的開源飛控的出現。
開源的概念最早被應用於開源軟體,開放源代碼促進會用其描述那些源碼可以被公眾使用的軟體,並且此軟體的使用、修改和發行也不受許可證的限制。開源軟體的發展逐漸與硬體相結合,產生了開源硬體。硬體與軟體不同之處是實物資源應該始終致力於創造實物商品。
每一個開源項目均擁有自己的論壇,由團隊或個人進行管理,論壇定期發布開源代碼,而對此感興趣的程序員都可以下載這些代碼,並對其進行修改,然後上傳自己的成果,管理者從眾多的修改中選擇合適的代碼改進程序並再次發布新版本。形成「共同開發、共同分享」的良性循環。
② 新手求大神做一個kk按鍵腳本,第一步按回車,第二步按下,第三步按上
Up, 2
復制上面代碼到按鍵精靈的源碼界面保存就能使用了KeyPress ;Space;;, 1
KeyPress
③ 購物網站源代碼
你就在www.chinaz.com上搜索商務網站就行了
一、關於asp源碼下載站點
1.中國站長網下載 http://www.chinaz.com/download/
為什麼沒有選擇K6 理由很簡單 做為比K6年輕的源碼下載站點 靠自己的特色 越做越大
並且提供建站相關的一切東西更新速度也很快! 估計很快就可以超過K6了
2.KK66下載中心 http://down.kk66.com/
瘦死的駱駝比馬大,是全國最多的建站源碼基地,但垃圾很多,現在K6的極端商業化已經使他逐漸的失去他自身的魅力。
3.ASP300 http://www.asp300.com/
選擇他,其實主要是他在國內做的很早,又是比較早進行收費的代碼下載站點,姑且不論他收費的對錯,但網路告別免費是遲早的,這一點,他做的很先進,他提供的代碼也是一些商業全站很不錯的東西,雖然有人說他拿其他站點免費的當自己的,但是就現在各個下載站提供他們的代碼都要加上一句"ASP300會員代碼"就可以看出他們做的還不錯。
4,信心網路工作室 http://www.xxsky.com/
做的也挺早,庫存代碼也多,現在不過好象有些迷失自己了,逐漸的被網友所遺忘。
5誰與爭鋒的下載欄目 http://www.china-code.net/
東西比較多 商業的也多 現在免費了。
6,ASP酷 http://www.aspcool.com/
還是老代碼下載基地,沒有什麼說的 排名主要靠他的資格在那裡 ,代碼更新慢,程序的相關資料還比較多。
7,源碼之家 http://www.mycodes.net/
也是比較早的源碼下載站點,好象今年是改版過的,提供的代碼現在也很不錯了,裡面還有很多商業的東西喲,現在庫存少! 更新速度還可以。
8,中國源碼中心 http://www.cncode.com/
老牌的,名字挺大的,沉寂了很長一段時間後重新改版,提供的東西不怎麼樣,全是其他站有的,說明比較齊全,更新比較快。
9,ASPDOWN http://www.aspdown.com/
靠提供商業的東西火了一段時間,然後開始不成熟的收費,使網站慢慢的往下走.現在好象又提出了什麼免費的ASPDOWN又回來了,其實又是一種變相的收費,咳 ,ASPDOWN前途為卜!
10,華迅鯤翔 http://www.ftpshow.com/
後起之秀,靠做論壇起家做然後做下載的,商業的東西很多,但是介紹少,現在庫存很少,但是快趕上CNCODE了,代碼全部是本地提供下載速度很快!。值得期待。
重新整理源碼下載地址及各類資源站點
④ KK源碼網是騙子網站!!!
原來還有QQ客服,現在全是支付寶收款,客服也隱蔽了,就是騙錢的
⑤ Akima 插值和樣條插值的C語言源代碼,要有注釋。
Akima插值
附帶的圖片為運行結果
#include"stdio.h"
#include"math.h"
#include"interpolation.h"
voidinterpolation_akima(AKINTEPap){
intnum,k,kk,m,l;
doublepio,*mtr,*x,*y,u[5],p,q;
num=ap->n;k=ap->k;
pio=ap->t;mtr=ap->s;
x=ap->x;y=ap->y;
if(num<1){
return;
}
elseif(num==1){
mtr[0]=mtr[4]=y[0];
return;
}
elseif(num==2){
mtr[0]=y[0];
mtr[1]=(y[1]-y[0])/(x[1]-x[0]);
if(k<0)
mtr[4]=(y[0]*(pio-x[1])-y[1]*(pio-x[0]))/(x[0]-x[1]);
return;
}
if(k<0){
if(pio<=x[1])kk=0;
elseif(pio>=x[num-1])kk=num-2;
else{
kk=1;m=num;
while(((kk-m)!=1)&&((kk-m)!=-1)){
l=(kk+m)/2;
if(pio<x[l-1])m=l;
elsekk=l;
}
kk--;
}
}
elsekk=k;
if(kk>=num-1)kk=num-2;
u[2]=(y[kk+1]-y[kk])/(x[kk+1]-x[kk]);
if(num==3){
if(kk==0){
u[3]=(y[2]-y[1])/(x[2]-x[1]);
u[4]=2.0*u[3]-u[2];
u[1]=2.0*u[2]-u[3];
u[0]=2.0*u[1]-u[2];
}
else{
u[1]=(y[1]-y[0])/(x[1]-x[0]);
u[0]=2.0*u[1]-u[2];
u[3]=2.0*u[2]-u[1];
u[4]=2.0*u[3]-u[2];
}
}
else{
if(kk<=1){
u[3]=(y[kk+2]-y[kk+1])/(x[kk+2]-x[kk+1]);
if(kk==1){
u[1]=(y[1]-y[0])/(x[1]-x[0]);
u[0]=2.0*u[1]-u[2];
if(num==4)u[4]=2.0*u[3]-u[2];
elseu[4]=(y[4]-y[3])/(x[4]-x[3]);
}
else{
u[1]=2.0*u[2]-u[3];
u[0]=2.0*u[1]-u[2];
u[4]=(y[3]-y[2])/(x[3]-x[2]);
}
}
elseif(kk>=(num-3)){
u[1]=(y[kk]-y[kk-1])/(x[kk]-x[kk-1]);
if(kk==(num-3)){
u[3]=(y[num-1]-y[num-2])/(x[num-1]-x[num-2]);
u[4]=2.0*u[3]-u[2];
if(num==4)u[0]=2.0*u[1]-u[2];
elseu[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);
}
else{
u[3]=2.0*u[2]-u[1];
u[4]=2.0*u[3]-u[2];
u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);
}
}
else{
u[1]=(y[kk]-y[kk-1])/(x[kk]-x[kk-1]);
u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);
u[3]=(y[kk+2]-y[kk+1])/(x[kk+2]-x[kk+1]);
u[4]=(y[kk+3]-y[kk+2])/(x[kk+3]-x[kk+2]);
}
}
mtr[0]=fabs(u[3]-u[2]);
mtr[1]=fabs(u[0]-u[1]);
if((fabs(mtr[0])<0.0000001)&&(fabs(mtr[1])<0.0000001))
p=(u[1]+u[2])/2.0;
elsep=(mtr[0]*u[1]+mtr[1]*u[2])/(mtr[0]+mtr[1]);
mtr[0]=fabs(u[3]-u[4]);
mtr[1]=fabs(u[2]-u[1]);
if((fabs(mtr[0])<0.0000001)&&(fabs(mtr[1])<0.0000001))
q=(u[2]+u[3])/2.0;
elseq=(mtr[0]*u[2]+mtr[1]*u[3])/(mtr[0]+mtr[1]);
mtr[0]=y[kk];
mtr[1]=p;
mtr[3]=x[kk+1]-x[kk];
mtr[2]=(3.0*u[2]-2.0*p-q)/mtr[3];
mtr[3]=(q+p-2.0*u[2])/(mtr[3]*mtr[3]);
if(k<0){
p=pio-x[kk];
mtr[4]=mtr[0]+mtr[1]*p+mtr[2]*p*p+mtr[3]*p*p*p;
}
return;
}
main()
{
doublex[11]={3.0,5.0,8.0,13.0,17.0,25.0,27.0,29.0,31.0,35.0,39.0};
doubley[11]={7.0,10.0,11.0,17.0,23.0,18.0,13.0,6.0,3.0,1.0,0.0};
AKINTEaa={11,x,y,-1,14.0,{0}};
AKINTEab={11,x,y,-1,28.0,{0}};
printf(" ");
interpolation_akima(&aa);
printf("x=%6.3f,f(x)=%e ",aa.t,aa.s[4]);
printf("mtr0=%e,mtr1=%e,mtr2=%e,mtr3=%e ",aa.s[0],aa.s[1],aa.s[2],aa.s[3]);
printf(" ");
interpolation_akima(&ab);
printf("x=%6.3f,f(x)=%e ",ab.t,ab.s[4]);
printf("mtr0=%e,mtr1=%e,mtr2=%e,mtr3=%e ",ab.s[0],ab.s[1],ab.s[2],ab.s[3]);
printf(" ");
}
三次樣條插值的實現
1、程序比較簡單的:
#include<iostream>
#include<iomanip>
usingnamespacestd;
constintMAX=50;
floatx[MAX],y[MAX],h[MAX];
floatc[MAX],a[MAX],fxym[MAX];
floatf(intx1,intx2,intx3){
floata=(y[x3]-y[x2])/(x[x3]-x[x2]);
floatb=(y[x2]-y[x1])/(x[x2]-x[x1]);
return(a-b)/(x[x3]-x[x1]);
}//求差分
voidcal_m(intn){//用追趕法求解出彎矩向量M……
floatB[MAX];
B[0]=c[0]/2;
for(inti=1;i<n;i++)
B[i]=c[i]/(2-a[i]*B[i-1]);
fxym[0]=fxym[0]/2;
for(i=1;i<=n;i++)
fxym[i]=(fxym[i]-a[i]*fxym[i-1])/(2-a[i]*B[i-1]);
for(i=n-1;i>=0;i--)
fxym[i]=fxym[i]-B[i]*fxym[i+1];
}
voidprintout(intn);
intmain(){
intn,i;charch;
do{
cout<<"Pleaseputinthenumberofthedots:";
cin>>n;
for(i=0;i<=n;i++){
cout<<"PleaseputinX"<<i<<':';
cin>>x[i];//cout<<endl;
cout<<"PleaseputinY"<<i<<':';
cin>>y[i];//cout<<endl;
}
for(i=0;i<n;i++)//求步長
h[i]=x[i+1]-x[i];
cout<<"Please輸入邊界條件 1:已知兩端的一階導數 2:兩端的二階導數已知 默認:自然邊界條件 ";
intt;
floatf0,f1;
cin>>t;
switch(t){
case1:cout<<"PleaseputinY0'Y"<<n<<"' ";
cin>>f0>>f1;
c[0]=1;a[n]=1;
fxym[0]=6*((y[1]-y[0])/(x[1]-x[0])-f0)/h[0];
fxym[n]=6*(f1-(y[n]-y[n-1])/(x[n]-x[n-1]))/h[n-1];
break;
case2:cout<<"PleaseputinY0"Y"<<n<<"" ";
cin>>f0>>f1;
c[0]=a[n]=0;
fxym[0]=2*f0;fxym[n]=2*f1;
break;
default:cout<<"不可用 ";//待定
};//switch
for(i=1;i<n;i++)
fxym[i]=6*f(i-1,i,i+1);
for(i=1;i<n;i++){
a[i]=h[i-1]/(h[i]+h[i-1]);
c[i]=1-a[i];
}
a[n]=h[n-1]/(h[n-1]+h[n]);
cal_m(n);
cout<<" 輸出三次樣條插值函數: ";
printout(n);
cout<<"Doyoutohaveanthertry?y/n:";
cin>>ch;
}while(ch=='y'||ch=='Y');
return0;
}
voidprintout(intn){
cout<<setprecision(6);
for(inti=0;i<n;i++){
cout<<i+1<<":["<<x[i]<<","<<x[i+1]<<"] "<<" ";
/*
cout<<fxym[i]/(6*h[i])<<"*("<<x[i+1]<<"-x)^3+"<<<<"*(x-"<<x[i]<<")^3+"
<<(y[i]-fxym[i]*h[i]*h[i]/6)/h[i]<<"*("<<x[i+1]<<"-x)+"
<<(y[i+1]-fxym[i+1]*h[i]*h[i]/6)/h[i]<<"(x-"<<x[i]<<") ";
cout<<endl;*/
floatt=fxym[i]/(6*h[i]);
if(t>0)cout<<t<<"*("<<x[i+1]<<"-x)^3";
elsecout<<-t<<"*(x-"<<x[i+1]<<")^3";
t=fxym[i+1]/(6*h[i]);
if(t>0)cout<<"+"<<t<<"*(x-"<<x[i]<<")^3";
elsecout<<"-"<<-t<<"*(x-"<<x[i]<<")^3";
cout<<" ";
t=(y[i]-fxym[i]*h[i]*h[i]/6)/h[i];
if(t>0)cout<<"+"<<t<<"*("<<x[i+1]<<"-x)";
elsecout<<"-"<<-t<<"*("<<x[i+1]<<"-x)";
t=(y[i+1]-fxym[i+1]*h[i]*h[i]/6)/h[i];
if(t>0)cout<<"+"<<t<<"*(x-"<<x[i]<<")";
elsecout<<"-"<<-t<<"*(x-"<<x[i]<<")";
cout<<endl<<endl;
}
cout<<endl;
}
2、程序比較復雜的:
(程序前面的01.,02.,03.等等為語句編號,實際應用時請一一刪除)01./*=======================================================================*/
02.#include<stdio.h>
03.////////////////////////////////////////////////////////////////////////////////
04.#defineMAXNUM50//定義樣條數據區間個數最多為50個
05.typedefstructSPLINE//定義樣條結構體,用於存儲一條樣條的所有信息
06.{//初始化數據輸入
07.floatx[MAXNUM+1];//存儲樣條上的點的x坐標,最多51個點
08.floaty[MAXNUM+1];//存儲樣條上的點的y坐標,最多51個點
09.unsignedintpoint_num;//存儲樣條上的實際的點的個數
10.floatbegin_k1;//開始點的一階導數信息
11.floatend_k1;//終止點的一階導數信息
12.//floatbegin_k2;//開始點的二階導數信息
13.//floatend_k2;//終止點的二階導數信息
14.//計算所得的樣條函數S(x)
15.floatk1[MAXNUM+1];//所有點的一階導數信息
16.floatk2[MAXNUM+1];//所有點的二階導數信息
17.//51個點之間有50個段,func[]存儲每段的函數系數
18.floata3[MAXNUM],a1[MAXNUM];
19.floatb3[MAXNUM],b1[MAXNUM];
20.//分段函數的形式為Si(x)=a3[i]*{x(i+1)-x}^3+a1[i]*{x(i+1)-x}+
21.//b3[i]*{x-x(i)}^3+b1[i]*{x-x(i)}
22.//xi為x[i]的值,xi_1為x[i+1]的值
23.}SPLINE,*pSPLINE;
24.typedefintRESULT;//返回函數執行的結果狀態,下面為具體的返回選項
25.#ifndefTRUE
26.#defineTRUE1
27.#endif
28.#ifndefFALSE
29.#defineFALSE-1
30.#endif
31.#ifndefNULL
32.#defineNULL0
33.#endif
34.#ifndefERR
35.#defineERR-2
36.#endif
37.//////////////////////////////////////////////////////////////////////////////////
38./*===============================================================================
39.***函數名稱:Spline3()
40.***功能說明:完成三次樣條差值,其中使用追趕法求解M矩陣
41.***入口參數:(pSPLINE)pLine樣條結構體指針pLine中的x[],y[],num,begin_k1,end_k1
42.***出口參數:(pSPLINE)pLine樣條結構體指針pLine中的函數參數
43.***返回參數:返回程序執行結果的狀態TRUEorFALSE
44.================================================================================*/
45.RESULTSpline3(pSPLINEpLine)
46.{
47.floatH[MAXNUM]={0};//小區間的步長
48.floatFi[MAXNUM]={0};//中間量
49.floatU[MAXNUM+1]={0};//中間量
50.floatA[MAXNUM+1]={0};//中間量
51.floatD[MAXNUM+1]={0};//中間量
52.floatM[MAXNUM+1]={0};//M矩陣
53.floatB[MAXNUM+1]={0};//追趕法中間量
54.floatY[MAXNUM+1]={0};//追趕法中間變數
55.inti=0;
56.////////////////////////////////////////計算中間參數
57.if((pLine->point_num<3)||(pLine->point_num>MAXNUM+1))
58.{
59.returnERR;//輸入數據點個數太少或太多
60.}
61.for(i=0;i<=pLine->point_num-2;i++)
62.{//求H[i]
63.H[i]=pLine->x[i+1]-pLine->x[i];
64.Fi[i]=(pLine->y[i+1]-pLine->y[i])/H[i];//求F[x(i),x(i+1)]
65.}
66.for(i=1;i<=pLine->point_num-2;i++)
67.{//求U[i]和A[i]和D[i]
68.U[i]=H[i-1]/(H[i-1]+H[i]);
69.A[i]=H[i]/(H[i-1]+H[i]);
70.D[i]=6*(Fi[i]-Fi[i-1])/(H[i-1]+H[i]);
71.}
72.//若邊界條件為1號條件,則
73.U[i]=1;
74.A[0]=1;
75.D[0]=6*(Fi[0]-pLine->begin_k1)/H[0];
76.D[i]=6*(pLine->end_k1-Fi[i-1])/H[i-1];
77.//若邊界條件為2號條件,則
78.//U[i]=0;
79.//A[0]=0;
80.//D[0]=2*begin_k2;
81.//D[i]=2*end_k2;
82./////////////////////////////////////////追趕法求解M矩陣
83.B[0]=A[0]/2;
84.for(i=1;i<=pLine->point_num-2;i++)
85.{
86.B[i]=A[i]/(2-U[i]*B[i-1]);
87.}
88.Y[0]=D[0]/2;
89.for(i=1;i<=pLine->point_num-1;i++)
90.{
91.Y[i]=(D[i]-U[i]*Y[i-1])/(2-U[i]*B[i-1]);
92.}
93.M[pLine->point_num-1]=Y[pLine->point_num-1];
94.for(i=pLine->point_num-1;i>0;i--)
95.{
96.M[i-1]=Y[i-1]-B[i-1]*M[i];
97.}
98.//////////////////////////////////////////計算方程組最終結果
99.for(i=0;i<=pLine->point_num-2;i++)
100.{
101.pLine->a3[i]=M[i]/(6*H[i]);
102.pLine->a1[i]=(pLine->y[i]-M[i]*H[i]*H[i]/6)/H[i];
103.pLine->b3[i]=M[i+1]/(6*H[i]);
104.pLine->b1[i]=(pLine->y[i+1]-M[i+1]*H[i]*H[i]/6)/H[i];
105.}
106.returnTRUE;
107.}
108.//////////////////////////////////////////////////////////////////////////////////
109.SPLINEline1;
110.pSPLINEpLine1=&line1;
111.//////////////////////////////////////////////////////////////////////////////////
112.main()
113.{
114.line1.x[0]=27.7;
115.line1.x[1]=28;
116.line1.x[2]=29;
117.line1.x[3]=30;
118.line1.y[0]=4.1;
119.line1.y[1]=4.3;
120.line1.y[2]=4.1;
121.line1.y[3]=3.0;
122.line1.point_num=4;
123.line1.begin_k1=3.0;
124.line1.end_k1=-4.0;
125.Spline3(pLine1);
126.return0;
127.}
128.//////////////////////////////////////////////////////////////////////////////////