本文整理汇总了C++中bs函数的典型用法代码示例。如果您正苦于以下问题:C++ bs函数的具体用法?C++ bs怎么用?C++ bs使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bs函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: createRoom
osg::Node* createRoom(osg::Node* loadedModel)
{
// default scale for this model.
osg::BoundingSphere bs(osg::Vec3(0.0f,0.0f,0.0f),1.0f);
osg::Group* root = new osg::Group;
if (loadedModel)
{
const osg::BoundingSphere& loaded_bs = loadedModel->getBound();
osg::PositionAttitudeTransform* pat = new osg::PositionAttitudeTransform();
pat->setPivotPoint(loaded_bs.center());
pat->setUpdateCallback(new ModelTransformCallback(loaded_bs));
pat->addChild(loadedModel);
bs = pat->getBound();
root->addChild(pat);
}
bs.radius()*=1.5f;
// create a bounding box, which we'll use to size the room.
osg::BoundingBox bb;
bb.expandBy(bs);
// create statesets.
osg::StateSet* rootStateSet = new osg::StateSet;
root->setStateSet(rootStateSet);
osg::StateSet* wall = new osg::StateSet;
wall->setMode(GL_CULL_FACE,osg::StateAttribute::ON);
osg::StateSet* floor = new osg::StateSet;
floor->setMode(GL_CULL_FACE,osg::StateAttribute::ON);
osg::StateSet* roof = new osg::StateSet;
roof->setMode(GL_CULL_FACE,osg::StateAttribute::ON);
osg::Geode* geode = new osg::Geode;
// create front side.
geode->addDrawable(createWall(bb.corner(0),
bb.corner(4),
bb.corner(1),
wall));
// right side
geode->addDrawable(createWall(bb.corner(1),
bb.corner(5),
bb.corner(3),
wall));
// left side
geode->addDrawable(createWall(bb.corner(2),
bb.corner(6),
bb.corner(0),
wall));
// back side
geode->addDrawable(createWall(bb.corner(3),
bb.corner(7),
bb.corner(2),
wall));
// floor
geode->addDrawable(createWall(bb.corner(0),
bb.corner(1),
bb.corner(2),
floor));
// roof
geode->addDrawable(createWall(bb.corner(6),
bb.corner(7),
bb.corner(4),
roof));
root->addChild(geode);
root->addChild(createLights(bb,rootStateSet));
return root;
}
开发者ID:ReWeb3D,项目名称:wtgles2,代码行数:87,代码来源:osglight.cpp
示例2: TNLAssert
void HuffmanStringProcessor::buildTables()
{
TNLAssert(mTablesBuilt == false, "Cannot build tables twice!");
mTablesBuilt = true;
S32 i;
// First, construct the array of wraps...
//
mHuffLeaves.setSize(256);
mHuffNodes.reserve(256);
mHuffNodes.setSize(mHuffNodes.size() + 1);
for (i = 0; i < 256; i++) {
HuffLeaf& rLeaf = mHuffLeaves[i];
rLeaf.pop = mCharFreqs[i] + 1;
rLeaf.symbol = U8(i);
memset(&rLeaf.code, 0, sizeof(rLeaf.code));
rLeaf.numBits = 0;
}
S32 currWraps = 256;
HuffWrap* pWrap = new HuffWrap[256];
for (i = 0; i < 256; i++) {
pWrap[i].set(&mHuffLeaves[i]);
}
while (currWraps != 1) {
U32 min1 = 0xfffffffe, min2 = 0xffffffff;
S32 index1 = -1, index2 = -1;
for (i = 0; i < currWraps; i++) {
if (pWrap[i].getPop() < min1) {
min2 = min1;
index2 = index1;
min1 = pWrap[i].getPop();
index1 = i;
} else if (pWrap[i].getPop() < min2) {
min2 = pWrap[i].getPop();
index2 = i;
}
}
TNLAssert(index1 != -1 && index2 != -1 && index1 != index2, "hrph");
// Create a node for this...
mHuffNodes.setSize(mHuffNodes.size() + 1);
HuffNode& rNode = mHuffNodes.last();
rNode.pop = pWrap[index1].getPop() + pWrap[index2].getPop();
rNode.index0 = determineIndex(pWrap[index1]);
rNode.index1 = determineIndex(pWrap[index2]);
S32 mergeIndex = index1 > index2 ? index2 : index1;
S32 nukeIndex = index1 > index2 ? index1 : index2;
pWrap[mergeIndex].set(&rNode);
if (index2 != (currWraps - 1)) {
pWrap[nukeIndex] = pWrap[currWraps - 1];
}
currWraps--;
}
TNLAssert(currWraps == 1, "wrong wraps?");
TNLAssert(pWrap[0].pNode != NULL && pWrap[0].pLeaf == NULL, "Wrong wrap type!");
// Ok, now we have one wrap, which is a node. we need to make sure that this
// is the first node in the node list.
mHuffNodes[0] = *(pWrap[0].pNode);
delete [] pWrap;
U32 code = 0;
BitStream bs((U8 *) &code, 4);
generateCodes(bs, 0, 0);
}
开发者ID:elfprince13,项目名称:OpenTNL,代码行数:75,代码来源:huffmanStringProcessor.cpp
示例3: QDialog
//.........这里部分代码省略.........
//
htab = new Q3HBox(gbox);
//htab->setMargin(5);
new QLabel("filter 3 : ", htab);
filter3_le = new LineEdit(htab);
new QLabel(" ", htab);
bg = new Q3HButtonGroup(htab);
bg->setRadioButtonExclusive(TRUE);
with3_rb = new QRadioButton("with", bg);
new QRadioButton("without", bg);
with3_rb->setChecked(TRUE);
//
//
gbox = new Q3VGroupBox("Stereotype" , this);
vbox->addWidget(gbox);
htab = new Q3HBox(gbox);
//htab->setMargin(5);
bg = new Q3HButtonGroup(htab);
bg->setRadioButtonExclusive(TRUE);
any_rb = new QRadioButton("any", bg);
is_rb = new QRadioButton("is", bg);
isnot_rb = new QRadioButton("is not", bg);
any_rb->setChecked(TRUE);
stereotype_le = new QLineEdit(htab);
//
//
gbox = new Q3VGroupBox("Targets" , this);
vbox->addWidget(gbox);
htab = new Q3HBox(gbox);
//htab->setMargin(5);
artifact_cb = new QCheckBox("artifact", htab);
class_cb = new QCheckBox("class", htab);
operation_cb = new QCheckBox("operation", htab);
attribute_cb = new QCheckBox("attribute", htab);
relation_cb = new QCheckBox("relation", htab);
//
//
gbox = new Q3VGroupBox("Languages" , this);
vbox->addWidget(gbox);
htab = new Q3HBox(gbox);
//htab->setMargin(5);
cpp_cb = new QCheckBox("C++", htab);
java_cb = new QCheckBox("Java", htab);
php_cb = new QCheckBox("Php", htab);
python_cb = new QCheckBox("Python", htab);
idl_cb = new QCheckBox("Idl", htab);
//
//
Q3Grid * grid = new Q3Grid(2, this);
vbox->addWidget(grid);
grid->setMargin(5);
grid->setSpacing(5);
new QLabel("current : ", grid);
current_le = new LineEdit(grid);
new QLabel("new : ", grid);
new_le = new LineEdit(grid);
//
//
htab = new Q3HBox(this);
htab->setMargin(5);
vbox->addWidget(htab);
new QLabel(htab);
QPushButton * replace = new QPushButton("Replace", htab);
new QLabel(htab);
QPushButton * quit = new QPushButton("Quit", htab);
new QLabel(htab);
QSize bs(replace->sizeHint());
quit->setFixedSize(bs);
connect(replace, SIGNAL(clicked()), this, SLOT(do_replace()));
connect(quit, SIGNAL(clicked()), this, SLOT(reject()));
}
开发者ID:02JanDal,项目名称:douml,代码行数:101,代码来源:Dialog.cpp
示例4: strcpy
/*
Description: Tests what happens if two instances of RakNet connect to each other at the same time. This has caused handshaking problems in the past.
Success conditions:
Everything connects and sends normally.
Failure conditions:
Expected values from ping/pong do not occur within expected time.
*/
int CrossConnectionConvertTest::RunTest(DataStructures::List<RakString> params,bool isVerbose,bool noPauses)
{
static const unsigned short SERVER_PORT=1234;
// char serverMode[32];
char serverIP[64];
strcpy(serverIP,"127.0.0.1");
char clientIP[64];
RakPeerInterface *server,*client;
unsigned short clientPort;
bool gotNotification;
server=RakPeerInterface::GetInstance();
destroyList.Clear(false,_FILE_AND_LINE_);
destroyList.Push(server,_FILE_AND_LINE_);
client=RakPeerInterface::GetInstance();
destroyList.Push(client,_FILE_AND_LINE_);
server->Startup(1,&SocketDescriptor(SERVER_PORT,0), 1);
server->SetMaximumIncomingConnections(1);
client->Startup(1,&SocketDescriptor(0,0), 1);
client->Ping(serverIP,SERVER_PORT,false);
// PacketLogger pl;
// pl.LogHeader();
// rakPeer->AttachPlugin(&pl);
TimeMS connectionAttemptTime=0,connectionResultDeterminationTime=0,nextTestStartTime=0;
TimeMS entryTime=GetTimeMS();//Loop entry time
bool printedYet=false;
while(GetTimeMS()-entryTime<10000)//Run for 10 Secoonds
{
Packet *p;
printedYet=false;
for (p=server->Receive(); p; server->DeallocatePacket(p), p=server->Receive())
{
if (isVerbose&&!printedYet)
{
printf("Server:\n");
printedYet=true;
}
if (p->data[0]==ID_NEW_INCOMING_CONNECTION)
{
if (isVerbose)
printf("ID_NEW_INCOMING_CONNECTION\n");
gotNotification=true;
}
else if (p->data[0]==ID_CONNECTION_REQUEST_ACCEPTED)
{
if (isVerbose)
printf("ID_CONNECTION_REQUEST_ACCEPTED\n");
gotNotification=true;
}
else if (p->data[0]==ID_UNCONNECTED_PING)
{
if (isVerbose)
printf("ID_PING\n");
connectionAttemptTime=GetTimeMS()+1000;
p->systemAddress.ToString(false,clientIP);
clientPort=p->systemAddress.port;
gotNotification=false;
}
else if (p->data[0]==ID_UNCONNECTED_PONG)
{
if (isVerbose)
printf("ID_UNCONNECTED_PONG\n");
TimeMS sendPingTime;
BitStream bs(p->data,p->length,false);
bs.IgnoreBytes(1);
bs.Read(sendPingTime);
TimeMS rtt = GetTimeMS() - sendPingTime;
if (rtt/2<=500)
connectionAttemptTime=GetTimeMS()+1000-rtt/2;
else
connectionAttemptTime=GetTimeMS();
gotNotification=false;
//.........这里部分代码省略.........
开发者ID:Darrenbydesign,项目名称:HoloToolkit,代码行数:101,代码来源:CrossConnectionConvertTest.cpp
示例5: bs
int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t Pts)
{
cBitStream bs(Data, Length * 8);
if (Length > 5 && bs.GetBits(8) == 0x0F) { // sync byte
int segmentType = bs.GetBits(8);
if (segmentType == STUFFING_SEGMENT)
return -1;
int pageId = bs.GetBits(16);
int segmentLength = bs.GetBits(16);
if (!bs.SetLength(bs.Index() + segmentLength * 8))
return -1;
cDvbSubtitlePage *page = NULL;
LOCK_THREAD;
for (cDvbSubtitlePage *sp = pages->First(); sp; sp = pages->Next(sp)) {
if (sp->PageId() == pageId) {
page = sp;
break;
}
}
if (!page) {
page = new cDvbSubtitlePage(pageId);
pages->Add(page);
dbgpages("Create SubtitlePage %d (total pages = %d)\n", pageId, pages->Count());
}
if (Pts)
page->SetPts(Pts);
switch (segmentType) {
case PAGE_COMPOSITION_SEGMENT: {
dbgsegments("PAGE_COMPOSITION_SEGMENT\n");
int pageTimeout = bs.GetBits(8);
int pageVersion = bs.GetBits(4);
if (pageVersion == page->Version())
break; // no update
page->SetVersion(pageVersion);
page->SetTimeout(pageTimeout);
page->SetState(bs.GetBits(2));
bs.SkipBits(2); // reserved
dbgpages("Update page id %d version %d pts %"PRId64" timeout %d state %d\n", pageId, page->Version(), page->Pts(), page->Timeout(), page->State());
while (!bs.IsEOF()) {
cSubtitleRegion *region = page->GetRegionById(bs.GetBits(8), true);
bs.SkipBits(8); // reserved
region->SetHorizontalAddress(bs.GetBits(16));
region->SetVerticalAddress(bs.GetBits(16));
}
break;
}
case REGION_COMPOSITION_SEGMENT: {
dbgsegments("REGION_COMPOSITION_SEGMENT\n");
cSubtitleRegion *region = page->GetRegionById(bs.GetBits(8));
if (!region)
break;
int regionVersion = bs.GetBits(4);
if (regionVersion == region->Version())
break; // no update
region->SetVersion(regionVersion);
bool regionFillFlag = bs.GetBit();
bs.SkipBits(3); // reserved
int regionWidth = bs.GetBits(16);
if (regionWidth < 1)
regionWidth = 1;
int regionHeight = bs.GetBits(16);
if (regionHeight < 1)
regionHeight = 1;
region->SetSize(regionWidth, regionHeight);
region->SetLevel(bs.GetBits(3));
region->SetDepth(bs.GetBits(3));
bs.SkipBits(2); // reserved
region->SetClutId(bs.GetBits(8));
dbgregions("Region pageId %d id %d version %d fill %d width %d height %d level %d depth %d clutId %d\n", pageId, region->RegionId(), region->Version(), regionFillFlag, regionWidth, regionHeight, region->Level(), region->Depth(), region->ClutId());
int region8bitPixelCode = bs.GetBits(8);
int region4bitPixelCode = bs.GetBits(4);
int region2bitPixelCode = bs.GetBits(2);
bs.SkipBits(2); // reserved
if (regionFillFlag) {
switch (region->Bpp()) {
case 2: region->FillRegion(region8bitPixelCode); break;
case 4: region->FillRegion(region4bitPixelCode); break;
case 8: region->FillRegion(region2bitPixelCode); break;
default: dbgregions("unknown bpp %d (%s %d)\n", region->Bpp(), __FUNCTION__, __LINE__);
}
}
while (!bs.IsEOF()) {
cSubtitleObject *object = region->GetObjectById(bs.GetBits(16), true);
int objectType = bs.GetBits(2);
object->SetCodingMethod(objectType);
object->SetProviderFlag(bs.GetBits(2));
int objectHorizontalPosition = bs.GetBits(12);
bs.SkipBits(4); // reserved
int objectVerticalPosition = bs.GetBits(12);
object->SetPosition(objectHorizontalPosition, objectVerticalPosition);
if (objectType == 0x01 || objectType == 0x02) {
object->SetForegroundPixelCode(bs.GetBits(8));
object->SetBackgroundPixelCode(bs.GetBits(8));
}
}
break;
}
case CLUT_DEFINITION_SEGMENT: {
dbgsegments("CLUT_DEFINITION_SEGMENT\n");
cSubtitleClut *clut = page->GetClutById(bs.GetBits(8), true);
//.........这里部分代码省略.........
开发者ID:Lexus34,项目名称:tdt-arp,代码行数:101,代码来源:dvbsubtitle.c
示例6: close
bool SmackerDecoder::loadStream(Common::SeekableReadStream *stream) {
close();
_fileStream = stream;
// Read in the Smacker header
_header.signature = _fileStream->readUint32BE();
if (_header.signature != MKTAG('S', 'M', 'K', '2') && _header.signature != MKTAG('S', 'M', 'K', '4'))
return false;
uint32 width = _fileStream->readUint32LE();
uint32 height = _fileStream->readUint32LE();
uint32 frameCount = _fileStream->readUint32LE();
int32 frameDelay = _fileStream->readSint32LE();
// frame rate contains 2 digits after the comma, so 1497 is actually 14.97 fps
Common::Rational frameRate;
if (frameDelay > 0)
frameRate = Common::Rational(1000, frameDelay);
else if (frameDelay < 0)
frameRate = Common::Rational(100000, -frameDelay);
else
frameRate = 1000;
// Flags are determined by which bit is set, which can be one of the following:
// 0 - set to 1 if file contains a ring frame.
// 1 - set to 1 if file is Y-interlaced
// 2 - set to 1 if file is Y-doubled
// If bits 1 or 2 are set, the frame should be scaled to twice its height
// before it is displayed.
_header.flags = _fileStream->readUint32LE();
SmackerVideoTrack *videoTrack = createVideoTrack(width, height, frameCount, frameRate, _header.flags, _header.signature);
addTrack(videoTrack);
// TODO: should we do any extra processing for Smacker files with ring frames?
// TODO: should we do any extra processing for Y-doubled videos? Are they the
// same as Y-interlaced videos?
uint32 i;
for (i = 0; i < 7; ++i)
_header.audioSize[i] = _fileStream->readUint32LE();
_header.treesSize = _fileStream->readUint32LE();
_header.mMapSize = _fileStream->readUint32LE();
_header.mClrSize = _fileStream->readUint32LE();
_header.fullSize = _fileStream->readUint32LE();
_header.typeSize = _fileStream->readUint32LE();
for (i = 0; i < 7; ++i) {
// AudioRate - Frequency and format information for each sound track, up to 7 audio tracks.
// The 32 constituent bits have the following meaning:
// * bit 31 - indicates Huffman + DPCM compression
// * bit 30 - indicates that audio data is present for this track
// * bit 29 - 1 = 16-bit audio; 0 = 8-bit audio
// * bit 28 - 1 = stereo audio; 0 = mono audio
// * bit 27 - indicates Bink RDFT compression
// * bit 26 - indicates Bink DCT compression
// * bits 25-24 - unused
// * bits 23-0 - audio sample rate
uint32 audioInfo = _fileStream->readUint32LE();
_header.audioInfo[i].hasAudio = audioInfo & 0x40000000;
_header.audioInfo[i].is16Bits = audioInfo & 0x20000000;
_header.audioInfo[i].isStereo = audioInfo & 0x10000000;
_header.audioInfo[i].sampleRate = audioInfo & 0xFFFFFF;
if (audioInfo & 0x8000000)
_header.audioInfo[i].compression = kCompressionRDFT;
else if (audioInfo & 0x4000000)
_header.audioInfo[i].compression = kCompressionDCT;
else if (audioInfo & 0x80000000)
_header.audioInfo[i].compression = kCompressionDPCM;
else
_header.audioInfo[i].compression = kCompressionNone;
if (_header.audioInfo[i].hasAudio) {
if (_header.audioInfo[i].compression == kCompressionRDFT || _header.audioInfo[i].compression == kCompressionDCT)
warning("Unhandled Smacker v2 audio compression");
if (i == 0)
addTrack(new SmackerAudioTrack(_header.audioInfo[i], _soundType));
}
}
_header.dummy = _fileStream->readUint32LE();
_frameSizes = new uint32[frameCount];
for (i = 0; i < frameCount; ++i)
_frameSizes[i] = _fileStream->readUint32LE();
_frameTypes = new byte[frameCount];
for (i = 0; i < frameCount; ++i)
_frameTypes[i] = _fileStream->readByte();
byte *huffmanTrees = (byte *) malloc(_header.treesSize);
_fileStream->read(huffmanTrees, _header.treesSize);
Common::BitStream8LSB bs(new Common::MemoryReadStream(huffmanTrees, _header.treesSize, DisposeAfterUse::YES), true);
//.........这里部分代码省略.........
开发者ID:CatalystG,项目名称:scummvm,代码行数:101,代码来源:smk_decoder.cpp
示例7: parseAudioSpecificConfig
static status_t parseAudioSpecificConfig(ABitReader *bits, sp<ABuffer> *asc) {
const uint8_t *dataStart = bits->data();
size_t totalNumBits = bits->numBitsLeft();
unsigned audioObjectType;
CHECK_EQ(parseAudioObjectType(bits, &audioObjectType), (status_t)OK);
unsigned samplingFreqIndex = bits->getBits(4);
if (samplingFreqIndex == 0x0f) {
/* unsigned samplingFrequency = */bits->getBits(24);
}
unsigned channelConfiguration = bits->getBits(4);
unsigned extensionAudioObjectType = 0;
unsigned sbrPresent = 0;
if (audioObjectType == 5) {
extensionAudioObjectType = audioObjectType;
sbrPresent = 1;
unsigned extensionSamplingFreqIndex = bits->getBits(4);
if (extensionSamplingFreqIndex == 0x0f) {
/* unsigned extensionSamplingFrequency = */bits->getBits(24);
}
CHECK_EQ(parseAudioObjectType(bits, &audioObjectType), (status_t)OK);
}
CHECK((audioObjectType >= 1 && audioObjectType <= 4)
|| (audioObjectType >= 6 && audioObjectType <= 7)
|| audioObjectType == 17
|| (audioObjectType >= 19 && audioObjectType <= 23));
CHECK_EQ(parseGASpecificConfig(
bits, audioObjectType, channelConfiguration), (status_t)OK);
if (audioObjectType == 17
|| (audioObjectType >= 19 && audioObjectType <= 27)) {
unsigned epConfig = bits->getBits(2);
if (epConfig == 2 || epConfig == 3) {
// ErrorProtectionSpecificConfig
return ERROR_UNSUPPORTED; // XXX to be implemented
if (epConfig == 3) {
unsigned directMapping = bits->getBits(1);
CHECK_EQ(directMapping, 1u);
}
}
}
if (extensionAudioObjectType != 5 && bits->numBitsLeft() >= 16) {
size_t numBitsLeftAtStart = bits->numBitsLeft();
unsigned syncExtensionType = bits->getBits(11);
if (syncExtensionType == 0x2b7) {
ALOGI("found syncExtension");
CHECK_EQ(parseAudioObjectType(bits, &extensionAudioObjectType),
(status_t)OK);
sbrPresent = bits->getBits(1);
if (sbrPresent == 1) {
unsigned extensionSamplingFreqIndex = bits->getBits(4);
if (extensionSamplingFreqIndex == 0x0f) {
/* unsigned extensionSamplingFrequency = */bits->getBits(24);
}
}
size_t numBitsInExtension =
numBitsLeftAtStart - bits->numBitsLeft();
if (numBitsInExtension & 7) {
// Apparently an extension is always considered an even
// multiple of 8 bits long.
ALOGI("Skipping %d bits after sync extension",
8 - (numBitsInExtension & 7));
bits->skipBits(8 - (numBitsInExtension & 7));
}
} else {
bits->putBits(syncExtensionType, 11);
}
}
if (asc != NULL) {
size_t bitpos = totalNumBits & 7;
ABitReader bs(dataStart, (totalNumBits + 7) / 8);
totalNumBits -= bits->numBitsLeft();
size_t numBytes = (totalNumBits + 7) / 8;
*asc = new ABuffer(numBytes);
if (bitpos & 7) {
bs.skipBits(8 - (bitpos & 7));
}
//.........这里部分代码省略.........
开发者ID:sztwang,项目名称:TX2_libstagefright,代码行数:101,代码来源:AMPEG4AudioAssembler.cpp
示例8: mexFunction
void mexFunction(
int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mwSize n, nn, i; /*nn is mxGetNumberOfElements, n and i derive from nn.*/
double *V, *Vend, *temp; /*mxGetPr, V, mxGetPr*/
double *sigma, *S, *k, *r, *d, *T; /*mxGetPr,...,mxGetPr*/
int nsigma, nS,nk,nr,nd,nT,nput, nv, nd1; /*1 or 0*/
bool *putflag; /*true*/
/* Error checking on inputs */
if (nrhs<6) mexErrMsgTxt("Not enough input arguments.");
if (nrhs>7) mexErrMsgTxt("Too many input arguments.");
if (nlhs>2) mexErrMsgTxt("Too many output arguments.");
for (i=0; i<nrhs; i++)
{
if (!mxIsDouble(prhs[i]) && !mxIsSparse(prhs[i]))
mexErrMsgTxt("Function not defined for variables of input class");
if (mxIsComplex(prhs[i]))
mexErrMsgTxt("X must be real.");
}
sigma=mxGetPr(prhs[0]);
S=mxGetPr(prhs[1]);
k=mxGetPr(prhs[2]);
r=mxGetPr(prhs[3]);
d=mxGetPr(prhs[4]);
T=mxGetPr(prhs[5]);
n=1;
nn=mxGetNumberOfElements(prhs[0]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[0]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nsigma=1; else nsigma=0;
nn=mxGetNumberOfElements(prhs[1]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[1]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nS=1; else nS=0;
nn=mxGetNumberOfElements(prhs[2]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[2]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nk=1; else nk=0;
nn=mxGetNumberOfElements(prhs[3]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[3]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nr=1; else nr=0;
nn=mxGetNumberOfElements(prhs[4]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[4]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nd=1; else nd=0;
nn=mxGetNumberOfElements(prhs[5]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[5]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nT=1; else nT=0;
if (nrhs<7) {putflag=mxCalloc(1,sizeof(bool)); *putflag=false; nput=0;}
else
{
nn=mxGetNumberOfElements(prhs[6]);
if (n!=nn)
if (n==1) {n=nn; plhs[0]=mxDuplicateArray(prhs[6]);}
else if (nn>1) mexErrMsgTxt("Inputs are not size compatible");
if (nn>1) nput=1; else nput=0;
putflag=mxCalloc(nn,sizeof(bool));
temp=mxGetPr(prhs[6]);
for (i=0;i<nn;i++)
if (temp[i]==1) putflag[i]=true; else putflag[i]=false;
}
if (n==1) plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);
V=mxGetPr(plhs[0]);
Vend=V+n;
for (;V<Vend;V++)
{
*V=bs(*sigma,*S,*k,*r,*d,*T,*putflag);
sigma+=nsigma;
S+=nS;
k+=nk;
r+=nr;
d+=nd;
T+=nT;
putflag+=nput;
}
}
开发者ID:abdo5520,项目名称:Golosov-Sargent,代码行数:97,代码来源:bs.c
示例9: main
int main(int argc, char* argv[])
{
BoxLib::Initialize(argc,argv);
BL_PROFILE_VAR("main()", pmain);
std::cout << std::setprecision(15);
solver_type = BoxLib_C;
bc_type = Periodic;
Real a = 0.0;
Real b = 1.0;
// ---- First use the number of processors to decide how many grids you have.
// ---- We arbitrarily decide to have one grid per MPI process in a uniform
// ---- cubic domain, so we require that the number of processors be N^3.
// ---- This requirement is somewhat arbitrary, but convenient for now.
int nprocs = ParallelDescriptor::NProcs();
// N is the cube root of the number of processors
int N(0);
for(int i(1); i*i*i <= nprocs; ++i) {
if(i*i*i == nprocs) {
N = i;
}
}
if(N == 0) { // not a cube
if(ParallelDescriptor::IOProcessor()) {
std::cerr << "**** Error: nprocs = " << nprocs << " is not currently supported." << std::endl;
}
BoxLib::Error("We require that the number of processors be a perfect cube");
}
if(ParallelDescriptor::IOProcessor()) {
std::cout << "N = " << N << std::endl;
}
// ---- make a box, then a boxarray with maxSize
int domain_hi = (N*maxGrid) - 1;
Box domain(IntVect(0,0,0), IntVect(domain_hi,domain_hi,domain_hi));
BoxArray bs(domain);
bs.maxSize(maxGrid);
// This defines the physical size of the box. Right now the box is [0,1] in each direction.
RealBox real_box;
for (int n = 0; n < BL_SPACEDIM; n++) {
real_box.setLo(n, 0.0);
real_box.setHi(n, 1.0);
}
// This says we are using Cartesian coordinates
int coord = 0;
// This sets the boundary conditions to be periodic or not
int is_per[BL_SPACEDIM];
if (bc_type == Dirichlet || bc_type == Neumann) {
for (int n = 0; n < BL_SPACEDIM; n++) is_per[n] = 0;
}
else {
for (int n = 0; n < BL_SPACEDIM; n++) is_per[n] = 1;
}
// This defines a Geometry object which is useful for writing the plotfiles
Geometry geom(domain,&real_box,coord,is_per);
for ( int n=0; n<BL_SPACEDIM; n++ ) {
dx[n] = ( geom.ProbHi(n) - geom.ProbLo(n) )/domain.length(n);
}
if (ParallelDescriptor::IOProcessor()) {
std::cout << "Domain size : " << N << std::endl;
std::cout << "Max_grid_size : " << maxGrid << std::endl;
std::cout << "Number of grids : " << bs.size() << std::endl;
}
// Allocate and define the right hand side.
MultiFab rhs(bs, Ncomp, 0, Fab_allocate);
setup_rhs(rhs, geom, a, b);
MultiFab alpha(bs, Ncomp, 0, Fab_allocate);
MultiFab beta[BL_SPACEDIM];
for ( int n=0; n<BL_SPACEDIM; ++n ) {
BoxArray bx(bs);
beta[n].define(bx.surroundingNodes(n), Ncomp, 1, Fab_allocate);
}
setup_coeffs(bs, alpha, beta, geom);
MultiFab anaSoln;
if (comp_norm) {
anaSoln.define(bs, Ncomp, 0, Fab_allocate);
compute_analyticSolution(anaSoln);
}
// Allocate the solution array
// Set the number of ghost cells in the solution array.
//.........这里部分代码省略.........
开发者ID:dwillcox,项目名称:BoxLib,代码行数:101,代码来源:main.cpp
示例10: arithmetic_decoding
int arithmetic_decoding(const char* encoded_file, const char* decoded_file)
{
FILE* fout;
uint8_t byte;
int i;
int i_ss;
int i_d;
int n;
int bitc = 0;
uint64_t tmp, mask, stream_slice;
int bits_to_read;
struct CST* cumulative_sums_tree_pointer;
struct BitBuffer* bbp = bit_open(encoded_file, BIT_BUFFER_READ);
if (bbp == NULL)
{
printf("%s: No such file\n", encoded_file);
return -1;
}
cumulative_sums_tree_pointer = CST_create(NUM_CODEPOINTS);
if (cumulative_sums_tree_pointer == NULL)
{
printf("Error: CST creation failed\n");
bit_close(bbp);
return -1;
}
fout = fopen(decoded_file, "wb");
if (fout == NULL)
{
printf("Error: cannot create output file %s\n", decoded_file);
return -1;
}
// we deal with the zero-frequency problem initializing all counters to 1 and consequently NUM_CODEPOINTS to total_count
total_count = NUM_CODEPOINTS;
for (i=1; i<NUM_CODEPOINTS; i++)
counter_increment(cumulative_sums_tree_pointer, i);
LOW = 0;
HIGH = 0xFFFFFFFFFFFFFFFF;
bits_to_read = sizeof(uint64_t) * 8;
stream_slice = 0x0000000000000000;
for (;;)
{
n = bit_read(bbp, &tmp, bits_to_read);
if (n == -1)
{
printf("Error occurred!!\n");
return -1;
}
// here n could be zero, but this is not a concern
bitc+=n;
if (bits_to_read == sizeof(uint64_t) * 8)
mask = 0xFFFFFFFFFFFFFFFF;
else
mask = ((uint64_t)1 << bits_to_read) - 1;
stream_slice = ((stream_slice << bits_to_read) | (tmp & mask));
/*
i = 0;
mask = 0x0000000000000001;
while (i < bits_to_read)
{
stream_slice <<= 1;
if (tmp & mask)
stream_slice |= 0x0000000000000001;
mask <<= 1;
i++;
} */
n = bs(cumulative_sums_tree_pointer, stream_slice);
if (n == -1)
return -1;
if (n == NUM_CODEPOINTS - 1) // EOF symbol received
break;
byte = (uint8_t)n;
fwrite(&byte, 1, 1, fout);
tmp = ((HIGH - LOW) / total_count);
HIGH = LOW + tmp * (cumulative_sums_lookup(cumulative_sums_tree_pointer, byte + 1));
LOW = LOW + tmp * cumulative_sums_lookup(cumulative_sums_tree_pointer, byte);
// deadlock resolution
if ((HIGH & 0xC000000000000000) == 0x8000000000000000 && (LOW & 0xC000000000000000) == 0x4000000000000000)
{
i_d = 2;
mask = 0x2000000000000000;
while (mask && (LOW & mask) && (HIGH & mask) == 0)
{
i_d++;
mask >>= 1;
}
LOW &= ~mask;
HIGH |= mask;
HIGH <<= i_d;
LOW <<= i_d;
}
else
开发者ID:vmaffione,项目名称:arithcoder,代码行数:100,代码来源:arithmetic_decoding.c
示例11: search
int search(int A[], int n, int target) {
return bs(A,0,n-1,target);
}
开发者ID:sillybowen,项目名称:leetcode,代码行数:4,代码来源:searchInRotatedSortedArray.cpp
示例12: a
void Office::draw()
{
float x,y;
x=posx;
y=posy;
float size = 0.39f;
glm::vec3 a(x+size,y+size,0);
glm::vec3 b(x-size,y+size,0);
glm::vec3 c(x-size,y-size,0);
glm::vec3 d(x+size,y-size,0);
float height = 1.9f;
glm::vec3 as(x+size,y+size,height);
glm::vec3 bs(x-size,y+size,height);
glm::vec3 cs(x-size,y-size,height);
glm::vec3 ds(x+size,y-size,height);
glBindTexture(GL_TEXTURE_2D,tex->getTexture("roof"));
glBegin(GL_QUADS);
glTexCoord2f(0,1);
glVertex3f(as.x,as.y,as.z);
glTexCoord2f(0,0);
glVertex3f(bs.x,bs.y,bs.z);
glTexCoord2f(1,0);
glVertex3f(cs.x,cs.y,cs.z);
glTexCoord2f(1,1);
glVertex3f(ds.x,ds.y,ds.z);
glEnd();
glBindTexture(GL_TEXTURE_2D,tex->getTexture("wall"));
glBegin(GL_QUADS);
glTexCoord2f(0,1);
glVertex3f(as.x,as.y,as.z);
glTexCoord2f(1,1);
glVertex3f(bs.x,bs.y,bs.z);
glTexCoord2f(1,0);
glVertex3f(b.x,b.y,b.z);
glTexCoord2f(0,0);
glVertex3f(a.x,a.y,a.z);
glTexCoord2f(0,1);
glVertex3f(bs.x,bs.y,bs.z);
glTexCoord2f(1,1);
glVertex3f(cs.x,cs.y,cs.z);
glTexCoord2f(1,0);
glVertex3f(c.x,c.y,c.z);
glTexCoord2f(0,0);
glVertex3f(b.x,b.y,b.z);
glTexCoord2f(0,1);
glVertex3f(cs.x,cs.y,cs.z);
glTexCoord2f(1,1);
glVertex3f(ds.x,ds.y,ds.z);
glTexCoord2f(1,0);
glVertex3f(d.x,d.y,d.z);
glTexCoord2f(0,0);
glVertex3f(c.x,c.y,c.z);
glTexCoord2f(0,1);
glVertex3f(ds.x,ds.y,ds.z);
glTexCoord2f(1,1);
glVertex3f(as.x,as.y,as.z);
glTexCoord2f(1,0);
glVertex3f(a.x,a.y,a.z);
glTexCoord2f(0,0);
glVertex3f(d.x,d.y,d.z);
glEnd();
}
开发者ID:lazorg64,项目名称:Game,代码行数:77,代码来源:office.cpp
示例13: chat
chat()
{
int c,kh,ch,x,y;
c=0;
ch=0;
kh=0;
put_char(12);
print("-*[ Force Ten Chat ]*- %s Chatting with %s #%d",config.sysop,user.name,user.number);
nl();
nl();
nl();
if(!useron)
{
nl();
pl(">>> No user on-line");
nl();
}
comm_flush();
while(1)
{
if(kbhit())
{
kh=1;
c=getch();
if(c==0)
{
c=getch();
if(c==68)
return;
}
/* if(c==F1)
{
curr_cursor(&x,&y);
c=kh=0;
pullmenu();
cursor(x,y);
}*/
if(c==13)
{
nl();
kh=c=0;
}
if(c==8)
{
bs();
kh=c=0;
}
}
if(comm_avail())
{
ch=1;
c=comm_getc(1);
if(c==13)
{
nl();
ch=c=0;
}
if(c==8)
{
bs();
ch=c=0;
}
}
if(ch || kh)
{
if(kh)
ansic(1);
else
ansic(2);
ch=kh=0;
put_char(c);
}
}
}
开发者ID:mdiiorio,项目名称:ForceTen,代码行数:75,代码来源:UTIL.C
示例14: BFGS
double BFGS (
Vector & x, // i: Startwert
// o: Loesung, falls IFAIL = 0
const MinFunction & fun,
const OptiParameters & par,
double eps
)
{
int i, j, n = x.Size();
long it;
char a1crit, a3acrit;
Vector d(n), g(n), p(n), temp(n), bs(n), xneu(n), y(n), s(n), x0(n);
DenseMatrix l(n);
DenseMatrix hesse(n);
double /* normg, */ alphahat, hd, fold;
double a1, a2;
const double mu1 = 0.1, sigma = 0.1, xi1 = 1, xi2 = 10;
const double tau = 0.1, tau1 = 0.1, tau2 = 0.6;
Vector typx(x.Size()); // i: typische Groessenordnung der Komponenten
double f, f0;
double typf; // i: typische Groessenordnung der Loesung
double fmin = -1e5; // i: untere Schranke fuer Funktionswert
// double eps = 1e-8; // i: Abbruchschranke fuer relativen Gradienten
double tauf = 0.1; // i: Abbruchschranke fuer die relative Aenderung der
// Funktionswerte
int ifail; // o: 0 .. Erfolg
// -1 .. Unterschreitung von fmin
// 1 .. kein Erfolg bei Liniensuche
// 2 .. Überschreitung von itmax
typx = par.typx;
typf = par.typf;
l = 0;
for (i = 1; i <= n; i++)
l.Elem(i, i) = 1;
f = fun.FuncGrad (x, g);
f0 = f;
x0 = x;
it = 0;
do
{
// Restart
if (it % (5 * n) == 0)
{
for (i = 1; i <= n; i++)
d.Elem(i) = typf/ sqr (typx.Get(i)); // 1;
for (i = 2; i <= n; i++)
for (j = 1; j < i; j++)
l.Elem(i, j) = 0;
/*
hesse = 0;
for (i = 1; i <= n; i++)
hesse.Elem(i, i) = typf / sqr (typx.Get(i));
fun.ApproximateHesse (x, hesse);
Cholesky (hesse, l, d);
*/
}
it++;
if (it > par.maxit_bfgs)
{
ifail = 2;
break;
}
// Solve with factorized B
SolveLDLt (l, d, g, p);
// (*testout) << "l " << l << endl
// << "d " << d << endl
// << "g " << g << endl
// << "p " << p << endl;
p *= -1;
y = g;
fold = f;
// line search
alphahat = 1;
//.........这里部分代码省略.........
开发者ID:AlexanderToifl,项目名称:viennamesh-dev,代码行数:101,代码来源:bfgs.cpp
示例15: mSqrt
void HifiClientProcessList::clientCatchup(GameConnection * connection)
{
#ifdef TORQUE_DEBUG_NET_MOVES
Con::printf("client catching up... (%i)%s", mCatchup, mForceHifiReset ? " reset" : "");
#endif
if (connection->getControlObject() && connection->getControlObject()->isGhostUpdated())
// if control object is reset, make sure moves are reset too
connection->mMoveList->resetCatchup();
const F32 maxVel = mSqrt(gMaxHiFiVelSq) * 1.25f;
F32 dt = F32(mCatchup+1) * TickSec;
Point3F bigDelta(maxVel*dt,maxVel*dt,maxVel*dt);
// walk through all process objects looking for ones which were updated
// -- during first pass merely collect neighbors which need to be reset and updated in unison
ProcessObject * pobj;
if (mCatchup && !mForceHifiReset)
{
for (pobj = mHead.mProcessLink.next; pobj != &mHead; pobj = pobj->mProcessLink.next)
{
GameBase *obj = getGameBase( pobj );
static SimpleQueryList nearby;
nearby.mList.clear();
// check for nearby objects which need to be reset and then caught up
// note the funky loop logic -- first time through obj is us, then
// we start iterating through nearby list (to look for objects nearby
// the nearby objects), which is why index starts at -1
// [objects nearby the nearby objects also get added to the nearby list]
for (S32 i=-1; obj; obj = ++i<nearby.mList.size() ? (GameBase*)nearby.mList[i] : NULL)
{
if (obj->isGhostUpdated() && (obj->getTypeMask() & GameBaseHiFiObjectType) && !obj->isNetNearbyAdded())
{
Point3F start = obj->getWorldSphere().center;
Point3F end = start + 1.1f * dt * obj->getVelocity();
F32 rad = 1.5f * obj->getWorldSphere().radius;
// find nearby items not updated but are hi fi, mark them as updated (and restore old loc)
// check to see if added items have neighbors that need updating
Box3F box;
Point3F rads(rad,rad,rad);
box.minExtents = box.maxExtents = start;
box.minExtents -= bigDelta + rads;
box.maxExtents += bigDelta + rads;
// CodeReview - this is left in for MBU, but also so we can deal with the issue later.
// add marble blast hack so hifi networking can see hidden objects
// (since hidden is under control of hifi networking)
// gForceNotHidden = true;
S32 j = nearby.mList.size();
gClientContainer.findObjects(box, GameBaseHiFiObjectType, SimpleQueryList::insertionCallback, &nearby);
// CodeReview - this is left in for MBU, but also so we can deal with the issue later.
// disable above hack
// gForceNotHidden = false;
// drop anyone not heading toward us or already checked
for (; j<nearby.mList.size(); j++)
{
GameBase * obj2 = (GameBase*)nearby.mList[j];
// if both passive, these guys don't interact with each other
bool passive = obj->isHifiPassive() && obj2->isHifiPassive();
if (!obj2->isGhostUpdated() && !passive)
{
// compare swept spheres of obj and obj2
// if collide, reset obj2, setGhostUpdated(true), and continue
Point3F end2 = obj2->getWorldSphere().center;
Point3F start2 = end2 - 1.1f * dt * obj2->getVelocity();
F32 rad2 = 1.5f * obj->getWorldSphere().radius;
if (MathUtils::capsuleCapsuleOverlap(start,end,rad,start2,end2,rad2))
{
// better add obj2
obj2->getTickCache().beginCacheList();
TickCacheEntry * tce = obj2->getTickCache().incCacheList();
BitStream bs(tce->packetData,TickCacheEntry::MaxPacketSize);
obj2->readPacketData(connection,&bs);
obj2->setGhostUpdated(true);
// continue so we later add the neighbors too
continue;
}
}
// didn't pass above test...so don't add it or nearby objects
nearby.mList[j] = nearby.mList.last();
nearby.mList.decrement();
j--;
}
obj->setNetNearbyAdded(true);
}
}
}
}
// save water mark -- for game base list
FrameAllocatorMarker mark;
// build ordered list of client objects which need to be caught up
//.........这里部分代码省略.........
开发者ID:03050903,项目名称:Torque3D,代码行数:101,代码来源:hifiGameProcess.cpp
示例16: main
//.........这里部分代码省略.........
case 't':
_receive_timeout = atoi(optarg);
break;
case 'p':
_priority = atoi(optarg);
break;
case 'l':
_lifetime = atoi(optarg);
break;
case 'E':
_bundle_encryption = true;
break;
case 'S':
_bundle_signed = true;
break;
case 'U':
_unixdomain = ibrcommon::File(optarg);
break;
case 'w':
_wait_seq_zero = true;
break;
case 'f':
_flow_control = true;
break;
default:
std::cout << "unknown command" << std::endl;
return -1;
}
}
try {
// Create a stream to the server
|
请发表评论