text:
Book Blast-Review, Excerpt & Giveaway: UNDERCOVER LOVERS by RJ Scott (Bodyguards, Inc #4)
Title: Undercover Lovers
Series: Bodyguards, Inc. #4
Author: R.J. Scott
Genre: M/M Contemporary Romance
Even if Ross and Kyle make it out of this alive, will the secrets in Kyle's heart stay safe?
Kyle gets caught up in a case that is entirely unrelated to Bodyguards Inc. Not only does he abruptly need time off, but he has to have absolute trust and complete support from Ross without being able to tell Ross a thing.
CIA Agent Stefan Mortimer needs Kyle's help with a case of a geneticist and a missing formula. Trouble is being led right to Kyle's door, endangering the life of the team he has built and the man that he loves.
Going undercover, with Ross as his husband, is the worst kind of torture in so many ways, but it is the only answer. Kyle and Ross may well live through this but Kyle is convinced his heart won't survive.
"...Sensual and sexy, RJ Scott delivers another winner in the Bodyguards Inc. series. Undercover Lovers hit the mark..."
"Sensual and sexy, RJ Scott delivers another winner in the Bodyguards Inc. Series. Undercover Lovers hit the mark." ~Evelise from S.E.X. Reviews
"This is easily my favourite book of the series so far. We have waited for Ross and Kyle's story and in all honesty that wait was more than worth it!" ~Prism Book Alliance
As soon as Max left the room, Kyle reached for the phone. He hesitated, with his fingers an inch from the handset, and listened to its beep indicating a call waiting.
Stefan Mortimer was at the other end of the call. That was a name Kyle hadn't expected to hear again for a very long time, and the fact the man had contacted Kyle didn't bode well. Especially considering Kyle thought, his and Stefan's association had been put to bed a long time ago. A twinge of guilt accompanied the memories. He'd been the one told to leave, he was the one who'd had no choice but to go, but leaving Stefan behind had never sat well with him.
A combination of anxiety and fear fluttered in his chest as he picked up the handset and pressed the button to connect.
Only to be offered a line that was dead.
"Stefan?" Kyle said to the empty air. For a second he held the receiver to his ear, then, very deliberately, replaced the handset in the cradle. Kyle rested his head on his hands, scrubbing his face to clear the tension. When the door opened, he knew it was Ross. He always knew when it was Ross.
"He got cut off," Ross announced.
Kyle nodded. "So I see."
Ross sat down in the visitor's chair directly opposite. "Is he a new client? Should I start a file for him?"
"No, an old…." How could he describe Stefan? Ex-lover, partner, old friend? "Someone I knew."
Ross eased forward in his chair, his gray eyes bright with interest. "Knew? Like you used your experience as a spy to know?" he asked in his usual inquisitive tone.
"From before," Kyle said. He was deliberately vague. As he was every time anyone at Bodyguards Inc. skirted near what Kyle used to do for a living. Ross loved to tease that Kyle had been CIA black ops. To be honest, Ross wasn't that far from the truth—but that had been a long time ago now.
Ross frowned but didn't keep it up.
"So, Max, then," Kyle said. Changing the subject was probably the way to go. He couldn't believe he'd just had Max in here telling him that he and Prince Lucien were an item. How the hell could the same thing happen to Bodyguards Inc. again after Ben and Adam had both fallen for their charges? "He crossed the line."
"Seems like it's getting to be a habit around here. First Adam, then Ben, and now Max. And I hear Lorna has a new boyfriend from her last case. Next it will be you." Ross looked down at the iPad in his lap. "Or me," he added.
The words were a knife through Kyle's heart. Imagining Ross with anyone other than him was something guaranteed to put him in a bad mood. "Don't have time for that," he lied. If Ross took even one second to notice his boss as anything other than his boss, then Kyle would make time. But that was as likely as a snowy day in hell.
Ross chuckled. Like that was a joke. Like Kyle didn't mean every syllable of it.
"Anyway," Ross continued. "Max seems happy, and his prince is a hundred times cute. Did you see Lucien's eyes? I've never seen eyes that dark before, and his hair. Can you imagine burying your fingers in hair like that? And he's a prince." Ross threw up a hand and smirked as he did so.
There was that stabbing again. Jealousy for real. Kyle didn't have to analyze what he was feeling. Ross was talking about how sexy another man was, and abruptly, Kyle was in a headspace that screamed possessiveness. The idea of Ross finding himself a guy like Prince Lucien? Someone who pressed all his buttons? Someone Ross could fall in love with? That was enough to have the anxiety of Stefan's phone call twist into something much worse. Jealousy.
"I have a solution," Ross announced. "We need to vet all our clients, and if there's any hint they are gay and single, we don't take them on. But, that wouldn't work for Lorna—she's straight, and she still met someone. Hmm, we should relabel ourselves. This could be a good marketing thing."
Ross ignored the warning in Kyle's single word and instead drew an imaginary banner in the air in front of him. "Hire a bodyguard: meet the man for the rest of your life."
Now it was Kyle's turn to ignore Ross. He had too much on his mind to find Ross as sexy and cute as he normally did; he had to focus. "Take a note. We'll need to do some research and dig up a couple of new bodyguards," Kyle said. He needed to concentrate on the company—on BI—and making sure what he had built was stable and secure.
"Take a note?" Ross muttered as he thumbed through his iPad. "Who even does that kind of thing?" Then he stopped at a page on the screen. "So yes, that is what I wanted to talk about. We have two new applicants you need to meet up with and do the usual due diligence. One is ex-MI5." Ross raised an eyebrow at that and turned the screen so that Kyle could see the face that went with the application. "Look at Mr. Tall, Dark and Ripped," he said.
"Ross, Jesus…"
Ross coughed to hide a laugh. "In summary, we are mostly down to the wire. I've turned down that reality show we worked on last year. And—" Ross sighed. "—Michael's wife called in. He's broken his leg."
"Broke his leg how?"
"Skateboarding."
Ross shrugged. "Maureen said he was teaching his nephew how to—" Ross peered at the screen. "—air and backside, whatever that means."
Kyle sat back in his chair. He'd need to do the usual. 'The usual' was flowers, or chocolates, or whiskey, or something useful, along with a personal note from him and the reassurance that the operative would still be paid enough to keep going. All the operatives at BI were self-employed, but Kyle considered himself a good boss, and he had the finances to back up any support needed. "I'll write something up."
"Well, hang on. Listen to this before you decide. Michael then called in, straight after his wife. Turns out he can't stand the idea of being at home. Apparently all four grandkids are staying for the summer holidays, and he's desperate to get out, so he's coming into the office."
"You're okay with that?" Kyle asked. Ross hated people interfering with his systems, and his stationery.
"Yeah, Michael's okay. I'll give him rules, and he'll stick with it. He's not like Adam."
Kyle was too stressed to listen to another of Ross's reasons why Adam was a wanker, as Ross so succinctly put it. Nor did he want to hear further elaboration as to the most recent place Adam had put Ross's stapler. He resolved to change the subject, but he didn't need to when the phone rang again. Before Kyle could reach it, Ross leaned over and picked it up.
"BI, how can I help?" There was silence, and Ross cast a glance at Kyle. "I'll just pass you over." He gave the handset to Kyle. "Stefan Mortimer."
Without being asked, Ross left the room and pulled the door shut behind him, and abruptly Kyle had no excuse not to talk to Stefan.
"What's wrong?" he said, cutting to the chase. There was no need to use his name. Stefan and he had been closer than lovers for three years, and they knew each other like no one else ever could. Under fire, behind enemy lines, undercover—they'd done it all.
"Thank f*ck," Stefan said. His voice was shaky, or was that the phone line? "I'm in the hospital," he added. Then he coughed, as if his body wanted to underline such a defining statement.
Kyle and Stefan had done their time in hospital beds, and both had the scars to prove it, but why was that something Stefan needed to break protocol to announce? Something awful, earth-shattering… something important.
"Talk to me," Kyle demanded without elaboration.
"K, Jason is dead. I f*cking killed him."
Stefan's partner was dead? "Sh*t, Stefan—"
"I sent you it all. It's been a week, f*cking hope it gets there. I need your help."
Kyle quickly went through the list of possible delivery options in his head. There was no email from Stefan, no voice message, nothing on the boards—which left the one thing that could work: good old-fashioned snail mail. Sent as something that may not make sense to anyone else. A standard spook-type thing.
"Okay." He didn't have to say anything else. If Stefan was contacting him after all this time, if Stefan needed his help, if Stefan was in trouble…. "I'll look for it."
"K?"
Then the phone was dead. Kyle realized he had been gripping the handset so hard that his fingers were numb. He uncurled his grip and replaced the handset in the cradle, then pressed the intercom. "Ross, can I get the mail?"
"You've had it."
"I need the other mail."
Ross didn't argue. "On it."
Company protocol was to have what Ross called "other mail" stored for a few months. Ross never argued with why Kyle needed to look through it every so often. He probably put it down to his boss being an eccentric American. Just like he did with most of the other things Kyle did that Ross called weird.
A couple of minutes later Ross backed into the room. In his arms was the recycling box. He placed it in the center of the table and then left. He didn't ask why Kyle wanted it in his office.
Methodically, Kyle worked his way through rejected CVs, some marketing letters, even a pile of pizza menus. Although how junk mail had made it up the driveway in the middle of nowhere to the manor house, he didn't know.
Right near the bottom, in familiar writing with a Los Angeles stamp, was what he was looking for. A letter from a marketing company talking about search engine optimization. There, in a flimsy business card, was a tiny chip. Sometimes the old ways were the best ways.
Kyle stood and locked the office door as quietly as he could, then crossed to the wall safe and opened it. Pulling out the chip reader, left over from a much earlier time in his life, he inserted the chip and waited for it to read. Wiring it to the printer was a little more problematic, but finally he managed it, and before too long he had a sheaf of printed information. His blood ran cold at page one, and by page ten he realized what he had agreed to would be something a little more involved than "just helping out." He pulled out his Glock and the cartridges, putting it into the top drawer of his desk, then locked the chip and the reader into the safe. He retook his seat to reread what had printed.
Grasping the papers in his hand, he unlocked his office door.
"Do we have anyone not booked out?"
Ross looked up from his desk, a frown on his expression and black ink on his cheek. The same black ink spread over his desk, and he looked flustered. "F*cking ink cartridge exploded on me," he said.
"Do we have anyone free?"
Ross blinked at Kyle as if he couldn't believe Kyle wasn't taking the ink situation seriously. "No," he said. "I told you, we're backs to the wall at the moment. Unless you want to push up interviews for new operatives."
"F*ck." Kyle cursed and thought on his feet. Not even Jen was here at the moment. His sister and her husband were on a second-honeymoon, trying-for-a-baby thing that had her out of touch for a month of love on a beach.
Timing sucks.
Kyle thought on his feet. He had no choice. It was Ross or nothing. "Okay, get Michael in here."
Ross sighed visibly, then wiggled his fingers in front of him. "Ink," he explained. Then added, "Michael's coming in tomorrow—"
"Jesus Christ, Ross! Just get Michael here today."
Kyle went back into his office and shut the door. He hoped to hell that Ross would do his regular thing and just get on with it, that he wouldn't come in and start asking questions.
The cover was simple—a couple on honeymoon. He'd done it before. But this case was different. This time he needed to blend in, in a very different way. This time he was a newly married man, and he needed a bride. Or a groom. Someone who would be his backup in an extremely toxic situation.
It could only be Ross.
Ross wasn't just his PA. He wasn't quite as well trained as the bodyguards on BI's books; he just found his peace in paperwork and running BI alongside Kyle. But he knew how to handle himself.
Not with guns. Not with the CIA. Not with this. It's too much. He argued with himself. Ross will be okay.
Then it hit him. What would he do if he had to spend time with Ross away from the office? How many of the secrets he held inside would come out? But there needed to be more than just Kyle himself on this; he needed someone else. And that someone else would have to be Ross, which was where the problems began. Ross wasn't interested in Kyle; Ross didn't want anything of what Kyle could give him.
Ross didn't know Kyle was in love with him. Wanted him. Had wanted him since the first day they met.
Ross didn't know that Kyle had tried and failed to find someone who actually looked back at him with anything like affection.
So how could he ask Ross to do what needed to be done?
He turned the sheets of paper one at a time and made notes on a pad, not looking up when Ross came into the office and took his regular seat.
"Michael's coming in," Ross announced.
"Thank you. And I'm sorry I shouted."
Ross shrugged one shoulder. "You want to tell me what's going on?"
"I need to take a case."
"What case?" Ross asked. He sounded confused, and Kyle wanted to explain, but he couldn't look up at Ross, let alone make words that explained what the hell was going on. "You don't take on cases. What happened?"
"There's something I have to do."
"Is it a something that is connected to Stefan Mortimer? You looked really shocked to hear his name."
Kyle glanced up at the question. Ross's gray eyes looked troubled. "What I can tell you is that this is a job for the two of us, me and you." He held up a hand to stop Ross talking. "I need you to back me up on this. For a week, maybe ten days tops, we need to go undercover."
"I don't know how… I mean… I'm not…." Ross began. Then he sighed. "I don't understand."
"All I can tell you is that we're needed, and this is a matter of national security."
Ross's eyes widened. "Like James Bond-type national security?"
"Not as dramatic as that. We need to get to a place called Stratton Bridge, and I'm sorry, but we have to leave today."
"What about my clothes? My laptop?"
"You can go home, get some clothes, take a laptop to stay connected to the office. When we get there, though, you will have a cover."
"Wait. Is this a bodyguard job? You're looking out for someone and you need me there to run the information side?"
"No, yes, and no." Kyle sighed. "You have to trust me on this when I say it's important, but I need something more than information."
Ross sat forward in his chair and looked deadly serious. "I do trust you, Kyle. You know that."
"Then all I can say is we're going undercover, both of us. I'll be with you every inch of the way."
Ross smiled and pushed his hair back off his face, leaving a streak of black on his forehead; evidently, he hadn't managed to wash off all the ink. "Undercover. Cool. What as? I could be a doctor or a teacher. Probably more a teacher, I guess. Not sure I'd be able to handle—"
"My husband," Kyle broke in. "The room we have, it's more of a suite." He recalled the information Stefan had given him: the block booking of the only available room, which had just been renovated. "We need to be on our honeymoon. Trust me, it's the best cover."
Ross's lips were in a round O, surprise on his face. "We're acting—" He coughed to clear his throat. "—married?"
Kyle focused in on the streak of black, trying not to let any emotion show on his face. "They only have the one room, just open after renovation, the honeymoon suite. I need your decision now."
While he waited tensely for Ross's reply, Kyle considered. He could go on his own, and when asked where his husband was, he could easily pretend he was getting divorced from his pretend husband. But why would he still need a honeymoon suite? He'd nearly talked himself into that one when Ross looked at him directly.
So many emotions passed over Ross's face that Kyle couldn't identify them all. He saw confusion, excitement, disappointment, the whole gamut of emotions. Then he saw Ross pull himself straight, and the smile returned. "We need a magnificent back story," Ross said. And with that he'd agreed to play his part, and his and Kyle's cover story was in place. "I'll get some stuff. Give me thirty."
Ross left, and Kyle listened for the distinctive growl of Ross's black and red motorbike. He couldn't help himself; he looked out of his window to the parking area below and saw Ross astride the beast of a machine that allowed him to zip around the country roads here.
"You'll kill yourself, Ross," he'd said when Ross had pulled up a few months ago as proud as a mom with a new baby.
"This, old man, is a Honda CBR1000RR Fireblade, and it's not dangerous, it's fun."
Ross reminded Kyle far too often that there were ten years separating them, but being thirty-five, Kyle didn't feel like an old man. He just preferred his Jaguar to the danger of the open road in nothing more than leather and a helmet.
"Says the man who moaned all last Friday that he had a paper cut."
And now, there he was. He'd pulled on his leathers, and f*ck, he looked like sex on legs. That gorgeous ass in leather, a black biker's jacket hugging his slim figure. So different to the patient, organized, stapler-loving Ross that Kyle had in his head. This Ross, the one on the bike, was wild and sexy and asking to be—
Kyle had to stop himself, and he cursed Stefan for dropping him in the sh*t from a great height. He and Ross, in a honeymoon suite, for a week—maybe more—and with Ross wanting a magnificent backstory when Kyle couldn't imagine what this case was going to bring him.
Espionage, agents, attempted murder, a favor to a friend thousands of miles away, and a new line in environmental disaster. Not to mention being undercover as married: with the man he was head over heels in love with in real life.
Just how wrong could this possibly go?
I've been eagerly awaiting Ross and Kyle's story after watching the two of them interacting through the first three books of the series. Undercover Lovers gives us a boss/employee scenario where both have feelings for each other but never let them show so they won't jeopardize their work environment. This sets us up for a lot of tension, enough to almost become frustrating as the two of them keep denying themselves.
Kyle has a past that includes secrets and work he's done that he can't talk about with others, and when a person from his past contacts him needing help, it sets up a situation where he's going to need help from Ross to get the job done. Ross is not really an operative, he's an office manager...and while he's got some defensive moves of his own, he's really just going on this job with Kyle as a way to conceal who they are while Kyle keeps an eye on someone in hiding to keep them safe. The fact that their cover is them being a newly married couple on their honeymoon...well, that just hits close enough to what they already feel to make things really awkward since neither will admit to their true feelings for each other.
There's sexual tension along with just a general strained atmosphere as they hide their emotions, until finally they give in...and boy do the sparks fly then!
Besides the evolution of Ross and Kyle's relationship, there's the matter of the man they are watching and keeping safe. For the most part during the story, things are pretty calm on that front, but when the situation goes awry, we get a nice dose of drama and suspense. I expected it, and the story pretty much pointed toward this happening, but it was still intriguing to read and really enjoyable.
The author is making it hard for me to choose a favorite in this series...but that's a good thing because it means I'm really enjoying every single story. Undercover Lovers kept me riveted to the pages and was a 4.5-star read for me. Fans of the series will be cheering for Ross and Kyle's story, I'd absolutely recommend this for M/M romance/romantic suspense fans 18+ (for adult language and M/M sexual content). I can't wait to read the next in the series!
RJ Scott has been writing since age six when she was made to stay in at lunchtime for an infraction involving cookies and was told to write a story. Two sides of A4 about a trapped princess later, a lover of writing was born. She reads anything from thrillers to sci-fi to horror; however, her first real love will always be the world of romance. From billionaires, bodyguards and cowboys to SEALs, throwaways and veterinarians, she writes passionate stories with a heart of romance, a troubled road to reach happiness, and more than a hint of happily ever after.
Labels: 18+, adult, book blast, book review, contemporary romance, excerpt, M/M, suspense
The ETERNALLY MATED Series by Valerie Twombly #99C...
Review Tour: AFTER WE FALL by Marquita Valentine
Release Day-Review & Giveaway: ON THE OUTSIDE by L...
Review Tour & Giveaway: RIVER OF LOVE by Melissa F...
SALE: WELCOME TO FOREVER by Annie Rains (Hero's We...
Blog Tour-Review: WICKED NEED by Sawyer Bennett (W...
Pre-Order & Giveaway: PERSONAL ENTANGLEMENT by Sil...
Book Review & Excerpt: IMPERFECT HARMONY by Jay No...
Pre-Order Blitz with Review, Excerpt & Giveaway: R...
New Release-Excerpt & Giveaway: DELTA: REVENGE by ...
Pre-Release Blitz-Excerpt & Giveaway: HIS SCANDALO...
Release Blast-Excerpt & Giveaway: FOREVER WITH YOU...
Release Day Blast with Excerpt: AFTER WE FALL by M...
New Release: THE LIGHTNING LUMINARY by RS McCoy
Review, Excerpt & Giveaway: THE ARTIST AND HIS ALP...
Release Blitz & Giveaway: KISSING ALEX by R.J. Sco...
New Release: LOVE NOTES: Eight Country Romances
Blog Barrage & Giveaway: POSSESSED BY A DARK WARRI...
Spotlight & Excerpt: BROOKLYN FLAME by Mira Gibson
New Release with Excerpt: CORRALLING KENZIE by Joa...
Tour-Review & Excerpt: DIRTIEST SECRET by J. Kenner
Cover Reveal: Daniel – The Third Legacy by RJ Scott
Release Blast-Excerpt & Giveaway: MAFIA SECRET by ...
Now Available for Pre-Order: COMING HOME
Release Day-Review & Giveaway: THE SPENCER COHEN S...
Relaunch Tour-Excerpt & Giveaway: KING ARTHUR'S SI...
New Release-Excerpt: (NOT SO) GOOD IN A ROOM by Da...
AudioBook Tour: STRONG ENOUGH and LOVE AT FIRST SI...
Tour: Review & Giveaway: DARE TO HOPE by TM Smith ...
Pre-Order & Excerpt: RISE OF ALPHA-THE PRODIAN JOU...
Release Day-Review, Excerpt & Giveaway: THE HEART ...
Release Day: WICKED NEED by Sawyer Bennett (Wicked...
Release Blitz with Excerpts: DEEP UNDER by Lisa Re...
Release Blitz: DIRTIEST SECRET by J. Kenner
Cover Reveal: THE SPIRAL DOWN by Aly Martinez
Book Blast-Review, Excerpt & Giveaway: LOVE'S DESI...
Book Tour: COWBOY JUSTICE 12 PACK
Pre-Release Blitz-Excerpt & Giveaway: SECRET BABY ...
Release Blitz: THE GUARDIAN by Jacquie Biggar
SALE Blitz: LAID OUT by Sidney Halston (Worth the ...
Book Blitz-Pre-Order, Excerpt & Giveaway: FOOL FOR...
Promo & Excerpt: GUILTY SECRETS by Jean Hart Stewart
Release Blitz-Review, Excerpt & Giveaway: RUSTIC M...
Book Blitz-Excerpt & Giveaway: WHO BETTER THAN CAN...
Cover Reveal: Gabriel – The Second Legacy by RJ Scott
Review & Excerpt: SLOW & STEADY by Kendall Ryan
Spotlight-Excerpt & Giveaway: AWAKENING by Megs Pr...
Book Blitz-Excerpt & Giveaway: WITHERING HOPE by L...
New Release & Excerpt: WEDDING DAY by Erin Bevan
Book Release: NEVER TRUST A SKINNY CUPCAKE BAKER b...
Cover Reveal & Excerpt: PROVOKED by Angela Ford
Tour & Giveaway: STRIPPED by Allie Juliette Mousseau
Release Blast-Excerpt & Giveaway: LOVE, ALABAMA by...
Release Blast-Excerpt & Giveaway: BREAKWATER BEACH...
Review, Excerpt & Giveaway: STUCK-UP SUIT by Vi Ke...
Release Blitz-Excerpt & Giveaway: ROCKY MOUNTAIN W...
Release Blast-Excerpt & Giveaway: GETTING WOUND UP...
Release Launch-Excerpt: SLOW & STEADY by Kendall Ryan
Review & Excerpt: FEARLESS by Nicole Edwards (Pier...
Review, Excerpt & More: THE MATCHMAKER'S PLAYBOOK ...
Release Blast-Excerpt & Giveaway: OFF THE HOOK by ...
Cover Reveal: HOW TO SAVE A LIFE by Andria Large
Now Available! STUCK-UP SUIT by Vi Keeland and Pen...
Release Blitz: WICKED STEPS by Cory Cyr
Book Blast-Review, Excerpt & Giveaway: UNDERCOVER ...
Review and Excerpt: DIRTY SEXY INKED by Carly Phil...
Cover Reveal: Kyle – The First Legacy by RJ Scott
Audiobook Tour-Reviews & Giveaway: MORE THAN EVERY...
Review, Excerpt & Giveaway: ACTING HAPPY by Rylie ...
Release Day-Excerpt: JOURNEY MAN by Victoria Danann
Release Blast-Review & Giveaway: DARE TO HOPE by T...
New Release: CHASING EVA by Camellia Hart (In Ligh...
Release Blast-Excerpt & Giveaway: REUNITED WITH TH...
Release Blitz-Excerpt: MY PERFECT MISTAKE by Kelly...
Release Blitz-Excerpt: THE WEDDING DATE by Kelly E...
Release Launch-Excerpt, Trailer & Giveaway: THE MA...
Release Blitz & Excerpt: PERFEKT BALANCE by S.T. B...
Release Blitz-Excerpt: DIRTY SEXY INKED by Carly P...
SALE: RECKLESS by Nicole Edwards (Pier 70 #1)--Onl...
Spotlight-Review: A DANGEROUSLY SEXY AFFAIR by Ste...
Excerpt Reveal: STUCK-UP SUIT by Vi Keeland & Pene...
Review, Excerpt & Giveaway: WHAT ONCE WAS LOST by ...
Review & Giveaway: PLAYING THE WITCH'S GAME by Zoe...
Tour & Giveaway-AMEERAH by Rebekkah Ford
Cover Reveal: INFINITE DOLLS by Emalynne Wilder
APRIL FOOLS BLOG HOP & GIVEAWAY!
Release Blitz: SUDDENLY DIRTY by JA Low
New Release with Excerpt: FINDERS KEEPERS by JJ Di...


text:
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>MIConvexHull</name>
    </assembly>
    <members>
        <member name="F:MIConvexHull.Constants.DefaultPlaneDistanceTolerance">
            <summary>
            The default plane distance tolerance
            </summary>
        </member>
        <member name="F:MIConvexHull.Constants.StartingDeltaDotProductInSimplex">
            <summary>
            The starting delta dot product in simplex
            </summary>
        </member>
        <member name="F:MIConvexHull.Constants.ConnectorTableSize">
            <summary>
            The connector table size
            </summary>
        </member>
        <member name="T:MIConvexHull.SimpleList`1">
            <summary>
            A more lightweight alternative to List of T.
            On clear, only resets the count and does not clear the references
            => this works because of the ObjectManager.
            Includes a stack functionality.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="F:MIConvexHull.SimpleList`1.capacity">
            <summary>
            The capacity
            </summary>
        </member>
        <member name="F:MIConvexHull.SimpleList`1.Count">
            <summary>
            The count
            </summary>
        </member>
        <member name="F:MIConvexHull.SimpleList`1.items">
            <summary>
            The items
            </summary>
        </member>
        <member name="P:MIConvexHull.SimpleList`1.Item(System.Int32)">
            <summary>
            Get the i-th element.
            </summary>
            <param name="i">The i.</param>
            <returns>T.</returns>
        </member>
        <member name="M:MIConvexHull.SimpleList`1.EnsureCapacity">
            <summary>
            Size matters.
            </summary>
        </member>
        <member name="M:MIConvexHull.SimpleList`1.Add(`0)">
            <summary>
            Adds a vertex to the buffer.
            </summary>
            <param name="item">The item.</param>
        </member>
        <member name="M:MIConvexHull.SimpleList`1.Push(`0)">
            <summary>
            Pushes the value to the back of the list.
            </summary>
            <param name="item">The item.</param>
        </member>
        <member name="M:MIConvexHull.SimpleList`1.Pop">
            <summary>
            Pops the last value from the list.
            </summary>
            <returns>T.</returns>
        </member>
        <member name="M:MIConvexHull.SimpleList`1.Clear">
            <summary>
            Sets the Count to 0, otherwise does nothing.
            </summary>
        </member>
        <member name="T:MIConvexHull.IndexBuffer">
            <summary>
            Class IndexBuffer.
            A fancy name for a list of integers.
            </summary>
        </member>
        <member name="T:MIConvexHull.FaceList">
            <summary>
            A priority based linked list.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceList.last">
            <summary>
            The last
            </summary>
        </member>
        <member name="P:MIConvexHull.FaceList.First">
            <summary>
            Get the first element.
            </summary>
            <value>The first.</value>
        </member>
        <member name="M:MIConvexHull.FaceList.AddFirst(MIConvexHull.ConvexFaceInternal)">
            <summary>
            Adds the element to the beginning.
            </summary>
            <param name="face">The face.</param>
        </member>
        <member name="M:MIConvexHull.FaceList.Add(MIConvexHull.ConvexFaceInternal)">
            <summary>
            Adds a face to the list.
            </summary>
            <param name="face">The face.</param>
        </member>
        <member name="M:MIConvexHull.FaceList.Remove(MIConvexHull.ConvexFaceInternal)">
            <summary>
            Removes the element from the list.
            </summary>
            <param name="face">The face.</param>
        </member>
        <member name="T:MIConvexHull.ConnectorList">
            <summary>
            Connector list.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConnectorList.last">
            <summary>
            The last
            </summary>
        </member>
        <member name="P:MIConvexHull.ConnectorList.First">
            <summary>
            Get the first element.
            </summary>
            <value>The first.</value>
        </member>
        <member name="M:MIConvexHull.ConnectorList.AddFirst(MIConvexHull.FaceConnector)">
            <summary>
            Adds the element to the beginning.
            </summary>
            <param name="connector">The connector.</param>
        </member>
        <member name="M:MIConvexHull.ConnectorList.Add(MIConvexHull.FaceConnector)">
            <summary>
            Adds a face to the list.
            </summary>
            <param name="element">The element.</param>
        </member>
        <member name="M:MIConvexHull.ConnectorList.Remove(MIConvexHull.FaceConnector)">
            <summary>
            Removes the element from the list.
            </summary>
            <param name="connector">The connector.</param>
        </member>
        <member name="T:MIConvexHull.ConvexFace`2">
            <summary>
            A convex face representation containing adjacency information.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TFace">The type of the t face.</typeparam>
        </member>
        <member name="P:MIConvexHull.ConvexFace`2.Adjacency">
            <summary>
            Adjacency. Array of length "dimension".
            If F = Adjacency[i] then the vertices shared with F are Vertices[j] where j != i.
            In the context of triangulation, can be null (indicates the cell is at boundary).
            </summary>
            <value>The adjacency.</value>
        </member>
        <member name="P:MIConvexHull.ConvexFace`2.Vertices">
            <summary>
            The vertices stored in clockwise order for dimensions 2 - 4, in higher dimensions the order is arbitrary.
            Unless I accidentally switch some index somewhere in which case the order is CCW. Either way, it is consistent.
            3D Normal = (V[1] - V[0]) x (V[2] - V[1]).
            </summary>
            <value>The vertices.</value>
        </member>
        <member name="P:MIConvexHull.ConvexFace`2.Normal">
            <summary>
            The normal vector of the face. Null if used in triangulation.
            </summary>
            <value>The normal.</value>
        </member>
        <member name="T:MIConvexHull.DefaultConvexFace`1">
            <summary>
            A default convex face representation.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
        </member>
        <member name="T:MIConvexHull.DeferredFace">
            <summary>
            For deferred face addition.
            </summary>
        </member>
        <member name="F:MIConvexHull.DeferredFace.Face">
            <summary>
            The faces.
            </summary>
        </member>
        <member name="F:MIConvexHull.DeferredFace.Pivot">
            <summary>
            The faces.
            </summary>
        </member>
        <member name="F:MIConvexHull.DeferredFace.OldFace">
            <summary>
            The faces.
            </summary>
        </member>
        <member name="F:MIConvexHull.DeferredFace.FaceIndex">
            <summary>
            The indices.
            </summary>
        </member>
        <member name="F:MIConvexHull.DeferredFace.PivotIndex">
            <summary>
            The indices.
            </summary>
        </member>
        <member name="T:MIConvexHull.FaceConnector">
            <summary>
            A helper class used to connect faces.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceConnector.EdgeIndex">
            <summary>
            The edge to be connected.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceConnector.Face">
            <summary>
            The face.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceConnector.HashCode">
            <summary>
            The hash code computed from indices.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceConnector.Next">
            <summary>
            Next node in the list.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceConnector.Previous">
            <summary>
            Prev node in the list.
            </summary>
        </member>
        <member name="F:MIConvexHull.FaceConnector.Vertices">
            <summary>
            The vertex indices.
            </summary>
        </member>
        <member name="M:MIConvexHull.FaceConnector.#ctor(System.Int32)">
            <summary>
            Ctor.
            </summary>
            <param name="dimension">The dimension.</param>
        </member>
        <member name="M:MIConvexHull.FaceConnector.Update(MIConvexHull.ConvexFaceInternal,System.Int32,System.Int32)">
            <summary>
            Updates the connector.
            </summary>
            <param name="face">The face.</param>
            <param name="edgeIndex">Index of the edge.</param>
            <param name="dim">The dim.</param>
        </member>
        <member name="M:MIConvexHull.FaceConnector.AreConnectable(MIConvexHull.FaceConnector,MIConvexHull.FaceConnector,System.Int32)">
            <summary>
            Can two faces be connected.
            </summary>
            <param name="a">a.</param>
            <param name="b">The b.</param>
            <param name="dim">The dim.</param>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:MIConvexHull.FaceConnector.Connect(MIConvexHull.FaceConnector,MIConvexHull.FaceConnector)">
            <summary>
            Connect two faces.
            </summary>
            <param name="a">a.</param>
            <param name="b">The b.</param>
        </member>
        <member name="T:MIConvexHull.ConvexFaceInternal">
            <summary>
            This internal class manages the faces of the convex hull. It is a
            separate class from the desired user class.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.AdjacentFaces">
            <summary>
            Gets or sets the adjacent face data.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.FurthestVertex">
            <summary>
            The furthest vertex.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Index">
            <summary>
            Index of the face inside the pool.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.InList">
            <summary>
            Is it present in the list.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.IsNormalFlipped">
            <summary>
            Is the normal flipped?
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Next">
            <summary>
            Next node in the list.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Normal">
            <summary>
            Gets or sets the normal vector.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Offset">
            <summary>
            Face plane constant element.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Previous">
            <summary>
            Prev node in the list.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Tag">
            <summary>
            Used to traverse affected faces and create the Delaunay representation.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.Vertices">
            <summary>
            Gets or sets the vertices.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexFaceInternal.VerticesBeyond">
            <summary>
            Gets or sets the vertices beyond.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexFaceInternal.#ctor(System.Int32,System.Int32,MIConvexHull.IndexBuffer)">
            <summary>
            Initializes a new instance of the <see cref="T:MIConvexHull.ConvexFaceInternal" /> class.
            </summary>
            <param name="dimension">The dimension.</param>
            <param name="index">The index.</param>
            <param name="beyondList">The beyond list.</param>
        </member>
        <member name="T:MIConvexHull.ConvexHull">
            <summary>
            Factory class for computing convex hulls.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHull.Create``2(System.Collections.Generic.IList{``0},System.Double)">
            <summary>
            Creates a convex hull of the input data.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TFace">The type of the t face.</typeparam>
            <param name="data">The data.</param>
            <param name="PlaneDistanceTolerance">The plane distance tolerance.</param>
            <returns>
            ConvexHull<TVertex, TFace>.
            </returns>
        </member>
        <member name="M:MIConvexHull.ConvexHull.Create``1(System.Collections.Generic.IList{``0},System.Double)">
            <summary>
            Creates a convex hull of the input data.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <param name="data">The data.</param>
            <param name="PlaneDistanceTolerance">The plane distance tolerance.</param>
            <returns>
            ConvexHull<TVertex, DefaultConvexFace<TVertex>>.
            </returns>
        </member>
        <member name="M:MIConvexHull.ConvexHull.Create(System.Collections.Generic.IList{System.Double[]},System.Double)">
            <summary>
            Creates a convex hull of the input data.
            </summary>
            <param name="data">The data.</param>
            <param name="PlaneDistanceTolerance">The plane distance tolerance.</param>
            <returns>
            ConvexHull<DefaultVertex, DefaultConvexFace<DefaultVertex>>.
            </returns>
        </member>
        <member name="T:MIConvexHull.ConvexHull`2">
            <summary>
            Representation of a convex hull.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TFace">The type of the t face.</typeparam>
        </member>
        <member name="M:MIConvexHull.ConvexHull`2.#ctor">
            <summary>
            Can only be created using a factory method.
            </summary>
        </member>
        <member name="P:MIConvexHull.ConvexHull`2.Points">
            <summary>
            Points of the convex hull.
            </summary>
            <value>The points.</value>
        </member>
        <member name="P:MIConvexHull.ConvexHull`2.Faces">
            <summary>
            Faces of the convex hull.
            </summary>
            <value>The faces.</value>
        </member>
        <member name="M:MIConvexHull.ConvexHull`2.Create(System.Collections.Generic.IList{`0},System.Double)">
            <summary>
            Creates the convex hull.
            </summary>
            <param name="data">The data.</param>
            <param name="PlaneDistanceTolerance">The plane distance tolerance.</param>
            <returns>
            ConvexHull<TVertex, TFace>.
            </returns>
            <exception cref="T:System.ArgumentNullException">The supplied data is null.</exception>
            <exception cref="T:System.ArgumentNullException">data</exception>
        </member>
        <member name="T:MIConvexHull.ConvexHullAlgorithm">
            <summary>
            Class ConvexHullAlgorithm.
            </summary>
            <summary>
            Class ConvexHullAlgorithm.
            </summary>
            <summary>
            Class ConvexHullAlgorithm.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.TagAffectedFaces(MIConvexHull.ConvexFaceInternal)">
            <summary>
            Tags all faces seen from the current vertex with 1.
            </summary>
            <param name="currentFace">The current face.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.TraverseAffectedFaces(System.Int32)">
            <summary>
            Recursively traverse all the relevant faces.
            </summary>
            <param name="currentFace">The current face.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.MakeDeferredFace(MIConvexHull.ConvexFaceInternal,System.Int32,MIConvexHull.ConvexFaceInternal,System.Int32,MIConvexHull.ConvexFaceInternal)">
            <summary>
            Creates a new deferred face.
            </summary>
            <param name="face">The face.</param>
            <param name="faceIndex">Index of the face.</param>
            <param name="pivot">The pivot.</param>
            <param name="pivotIndex">Index of the pivot.</param>
            <param name="oldFace">The old face.</param>
            <returns>DeferredFace.</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.ConnectFace(MIConvexHull.FaceConnector)">
            <summary>
            Connect faces using a connector.
            </summary>
            <param name="connector">The connector.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.CreateCone">
            <summary>
            Removes the faces "covered" by the current vertex and adds the newly created ones.
            </summary>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.CommitCone">
            <summary>
            Commits a cone and adds a vertex to the convex hull.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.IsBeyond(MIConvexHull.ConvexFaceInternal,MIConvexHull.IndexBuffer,System.Int32)">
            <summary>
            Check whether the vertex v is beyond the given face. If so, add it to beyondVertices.
            </summary>
            <param name="face">The face.</param>
            <param name="beyondVertices">The beyond vertices.</param>
            <param name="v">The v.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.LexCompare(System.Int32,System.Int32)">
            <summary>
            Compares the values of two vertices. The return value (-1, 0 or +1) are found
            by first checking the first coordinate and then progressing through the rest.
            In this way {2, 8} will be a "-1" (less than) {3, 1}.
            </summary>
            <param name="u">The base vertex index, u.</param>
            <param name="v">The compared vertex index, v.</param>
            <returns>System.Int32.</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.FindBeyondVertices(MIConvexHull.ConvexFaceInternal,MIConvexHull.IndexBuffer,MIConvexHull.IndexBuffer)">
            <summary>
            Used by update faces.
            </summary>
            <param name="face">The face.</param>
            <param name="beyond">The beyond.</param>
            <param name="beyond1">The beyond1.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.FindBeyondVertices(MIConvexHull.ConvexFaceInternal,MIConvexHull.IndexBuffer)">
            <summary>
            Finds the beyond vertices.
            </summary>
            <param name="face">The face.</param>
            <param name="beyond">The beyond.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.UpdateCenter">
            <summary>
            Recalculates the centroid of the current hull.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.RollbackCenter">
            <summary>
            Removes the last vertex from the center.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.HandleSingular">
            <summary>
            Handles singular vertex.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.GetCoordinate(System.Int32,System.Int32)">
            <summary>
            Get a vertex coordinate. In order to reduce speed, all vertex coordinates
            have been placed in a single array.
            </summary>
            <param name="vIndex">The vertex index.</param>
            <param name="dimension">The index of the dimension.</param>
            <returns>System.Double.</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.GetHullVertices``1(System.Collections.Generic.IList{``0})">
            <summary>
            Gets the hull vertices.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <param name="data">The data.</param>
            <returns>TVertex[].</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.GetConvexFaces``2">
            <summary>
            Finds the convex hull and creates the TFace objects.
            </summary>
            <typeparam name="TFace">The type of the t face.</typeparam>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <returns>TFace[].</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.Return2DResultInOrder``2(System.Collections.Generic.IList{``0})">
            <summary>
            For 2D only: Returns the result in counter-clockwise order starting with the element with the lowest X value.
            If there are multiple vertices with the same minimum X, then the one with the lowest Y is chosen.
            </summary>
            <typeparam name="TVertex">The type of the vertex.</typeparam>
            <typeparam name="TFace">The type of the face.</typeparam>
            <param name="data">The data.</param>
            <returns></returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.GetConvexHull``2(System.Collections.Generic.IList{``0},System.Double)">
            <summary>
            The main function for the Convex Hull algorithm. It is static, but it creates
            an instantiation of this class in order to allow for parallel execution.
            Following this simple function, the constructor and the main function "FindConvexHull" is listed.
            </summary>
            <typeparam name="TVertex">The type of the vertices in the data.</typeparam>
            <typeparam name="TFace">The desired type of the faces.</typeparam>
            <param name="data">The data is the vertices as a collection of IVertices.</param>
            <param name="PlaneDistanceTolerance">The plane distance tolerance.</param>
            <returns>
            MIConvexHull.ConvexHull<TVertex, TFace>.
            </returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.#ctor(MIConvexHull.IVertex[],System.Boolean,System.Double)">
            <summary>
            Initializes a new instance of the <see cref="T:MIConvexHull.ConvexHullAlgorithm" /> class.
            </summary>
            <param name="vertices">The vertices.</param>
            <param name="lift">if set to <c>true</c> [lift].</param>
            <param name="PlaneDistanceTolerance">The plane distance tolerance.</param>
            <exception cref="T:System.InvalidOperationException">Dimension of the input must be 2 or greater.</exception>
            <exception cref="T:System.ArgumentException">There are too few vertices (m) for the n-dimensional space. (m must be greater  +
            than the n, but m is  + NumberOfVertices +  and n is  + NumOfDimensions</exception>
            <exception cref="T:System.InvalidOperationException">PointTranslationGenerator cannot be null if PointTranslationType is enabled.
            or
            Dimension of the input must be 2 or greater.</exception>
            <exception cref="T:System.ArgumentException">There are too few vertices (m) for the n-dimensional space. (m must be greater " +
            "than the n, but m is " + NumberOfVertices + " and n is " + Dimension</exception>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.DetermineDimension">
            <summary>
            Check the dimensionality of the input data.
            </summary>
            <returns>System.Int32.</returns>
            <exception cref="T:System.ArgumentException">Invalid input data (non-uniform dimension).</exception>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.GetConvexHull">
            <summary>
            Gets/calculates the convex hull. This is
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.SerializeVerticesToPositions">
            <summary>
            Serializes the vertices into the 1D array, Positions. The 1D array has much quicker access in C#.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.FindBoundingBoxPoints">
            <summary>
            Finds the bounding box points.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.ShiftAndScalePositions">
            <summary>
            Shifts and scales the Positions to avoid future errors. This does not alter the original data.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.CreateInitialSimplex">
            <summary>
            Find the (dimension+1) initial points and create the simplexes.
            Creates the initial simplex of n+1 vertices by using points from the bounding box.
            Special care is taken to ensure that the vertices chosen do not result in a degenerate shape
            where vertices are collinear (co-planar, etc). This would technically be resolved when additional
            vertices are checked in the main loop, but: 1) a degenerate simplex would not eliminate any other
            vertices (thus no savings there), 2) the creation of the face normal is prone to error.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.FindInitialPoints">
            <summary>
            Finds (dimension + 1) initial points.
            </summary>
            <returns>List<System.Int32>.</returns>
            <exception cref="T:System.ArgumentException">The input data is degenerate. It appears to exist in " + NumOfDimensions +
                                " dimensions, but it is a " + (NumOfDimensions - 1) + " dimensional set (i.e. the point of collinear,"
                                + " coplanar, or co-hyperplanar.)</exception>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.UpdateAdjacency(MIConvexHull.ConvexFaceInternal,MIConvexHull.ConvexFaceInternal)">
            <summary>
            Check if 2 faces are adjacent and if so, update their AdjacentFaces array.
            </summary>
            <param name="l">The l.</param>
            <param name="r">The r.</param>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.FindBeyondVertices(MIConvexHull.ConvexFaceInternal)">
            <summary>
            Used in the "initialization" code.
            </summary>
            <param name="face">The face.</param>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.NumOfDimensions">
            <summary>
            Corresponds to the dimension of the data.
            When the "lifted" hull is computed, Dimension is automatically incremented by one.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.IsLifted">
            <summary>
            Are we on a paraboloid?
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.PlaneDistanceTolerance">
            <summary>
            Explained in ConvexHullComputationConfig.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.Vertices">
            <summary>
            The vertices
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.Positions">
            <summary>
            The positions
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.VertexVisited">
            <summary>
            The vertex marks
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.FacePool">
            <summary>
            The face pool
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.AffectedFaceFlags">
            <summary>
            The affected face flags
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.ConvexHullSize">
            <summary>
            Used to track the size of the current hull in the Update/RollbackCenter functions.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.UnprocessedFaces">
            <summary>
            A list of faces that that are not a part of the final convex hull and still need to be processed.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.ConvexFaces">
            <summary>
            A list of faces that form the convex hull.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.CurrentVertex">
            <summary>
            The vertex that is currently being processed.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.MaxDistance">
            <summary>
            A helper variable to determine the furthest vertex for a particular convex face.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.FurthestVertex">
            <summary>
            A helper variable to help determine the index of the vertex that is furthest from the face that is currently being
            processed.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.Center">
            <summary>
            The centroid of the currently computed hull.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.UpdateBuffer">
            <summary>
            The update buffer
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.UpdateIndices">
            <summary>
            The update indices
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.TraverseStack">
            <summary>
            Used to determine which faces need to be updated at each step of the algorithm.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.EmptyBuffer">
            <summary>
            Used for VerticesBeyond for faces that are on the convex hull.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.BeyondBuffer">
            <summary>
            Used to determine which vertices are "above" (or "beyond") a face
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.AffectedFaceBuffer">
            <summary>
            Stores faces that are visible from the current vertex.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.ConeFaceBuffer">
            <summary>
            Stores faces that form a "cone" created by adding new vertex.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.SingularVertices">
            <summary>
            Stores a list of "singular" (or "generate", "planar", etc.) vertices that cannot be part of the hull.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.ConnectorTable">
            <summary>
            The connector table helps to determine the adjacency of convex faces.
            Hashing is used instead of pairwise comparison. This significantly speeds up the computations,
            especially for higher dimensions.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.ObjectManager">
            <summary>
            Manages the memory allocations and storage of unused objects.
            Saves the garbage collector a lot of work.
            </summary>
        </member>
        <member name="F:MIConvexHull.ConvexHullAlgorithm.mathHelper">
            <summary>
            Helper class for handling math related stuff.
            </summary>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.GetDelaunayTriangulation``2(System.Collections.Generic.IList{``0})">
            <summary>
            Computes the Delaunay triangulation.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <param name="data">The data.</param>
            <returns>TCell[].</returns>
        </member>
        <member name="M:MIConvexHull.ConvexHullAlgorithm.RemoveUpperFaces">
            <summary>
            Removes up facing Tetrahedrons from the triangulation.
            </summary>
        </member>
        <member name="T:MIConvexHull.IVertex">
            <summary>
            An interface for a structure with nD position.
            </summary>
        </member>
        <member name="P:MIConvexHull.IVertex.Position">
            <summary>
            Position of the vertex.
            </summary>
            <value>The position.</value>
        </member>
        <member name="T:MIConvexHull.DefaultVertex">
            <summary>
            "Default" vertex.
            </summary>
            <seealso cref="T:MIConvexHull.IVertex" />
        </member>
        <member name="P:MIConvexHull.DefaultVertex.Position">
            <summary>
            Position of the vertex.
            </summary>
            <value>The position.</value>
        </member>
        <member name="T:MIConvexHull.MathHelper">
            <summary>
            A helper class mostly for normal computation. If convex hulls are computed
            in higher dimensions, it might be a good idea to add a specific
            FindNormalVectorND function.
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.Dimension">
            <summary>
            The dimension
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.matrixPivots">
            <summary>
            The matrix pivots
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.nDMatrix">
            <summary>
            The n d matrix
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.nDNormalHelperVector">
            <summary>
            The n d normal helper vector
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.ntX">
            <summary>
            The nt x
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.ntY">
            <summary>
            The nt y
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.ntZ">
            <summary>
            The nt z
            </summary>
        </member>
        <member name="F:MIConvexHull.MathHelper.PositionData">
            <summary>
            The position data
            </summary>
        </member>
        <member name="M:MIConvexHull.MathHelper.#ctor(System.Int32,System.Double[])">
            <summary>
            Initializes a new instance of the <see cref="T:MIConvexHull.MathHelper"/> class.
            </summary>
            <param name="dimension">The dimension.</param>
            <param name="positions">The positions.</param>
        </member>
        <member name="M:MIConvexHull.MathHelper.CalculateFacePlane(MIConvexHull.ConvexFaceInternal,System.Double[])">
            <summary>
            Calculates the normal and offset of the hyper-plane given by the face's vertices.
            </summary>
            <param name="face">The face.</param>
            <param name="center">The center.</param>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:MIConvexHull.MathHelper.GetVertexDistance(System.Int32,MIConvexHull.ConvexFaceInternal)">
            <summary>
            Check if the vertex is "visible" from the face.
            The vertex is "over face" if the return value is > Constants.PlaneDistanceTolerance.
            </summary>
            <param name="v">The v.</param>
            <param name="f">The f.</param>
            <returns>The vertex is "over face" if the result is positive.</returns>
        </member>
        <member name="M:MIConvexHull.MathHelper.VectorBetweenVertices(System.Int32,System.Int32)">
            <summary>
            Returns the vector the between vertices.
            </summary>
            <param name="toIndex">To index.</param>
            <param name="fromIndex">From index.</param>
            <returns>System.Double[].</returns>
        </member>
        <member name="M:MIConvexHull.MathHelper.VectorBetweenVertices(System.Int32,System.Int32,System.Double[])">
            <summary>
            Returns the vector the between vertices.
            </summary>
            <param name="fromIndex">From index.</param>
            <param name="toIndex">To index.</param>
            <param name="target">The target.</param>
            <returns></returns>
        </member>
        <member name="M:MIConvexHull.MathHelper.FindNormalVector(System.Int32[],System.Double[])">
            <summary>
            Finds normal vector of a hyper-plane given by vertices.
            Stores the results to normalData.
            </summary>
            <param name="vertices">The vertices.</param>
            <param name="normalData">The normal data.</param>
        </member>
        <member name="M:MIConvexHull.MathHelper.FindNormalVector2D(System.Int32[],System.Double[])">
            <summary>
            Finds 2D normal vector.
            </summary>
            <param name="vertices">The vertices.</param>
            <param name="normal">The normal.</param>
        </member>
        <member name="M:MIConvexHull.MathHelper.FindNormalVector3D(System.Int32[],System.Double[])">
            <summary>
            Finds 3D normal vector.
            </summary>
            <param name="vertices">The vertices.</param>
            <param name="normal">The normal.</param>
        </member>
        <member name="M:MIConvexHull.MathHelper.FindNormalVector4D(System.Int32[],System.Double[])">
            <summary>
            Finds 4D normal vector.
            </summary>
            <param name="vertices">The vertices.</param>
            <param name="normal">The normal.</param>
        </member>
        <member name="M:MIConvexHull.MathHelper.FindNormalVectorND(System.Int32[],System.Double[])">
            <summary>
            Finds the normal vector nd.
            </summary>
            <param name="vertices">The vertices.</param>
            <param name="normal">The normal.</param>
        </member>
        <member name="M:MIConvexHull.MathHelper.GetSimplexVolume(System.Double[][],System.Int32,System.Double)">
            <summary>
            Gets the simplex volume. Prior to having enough edge vectors, the method pads the remaining with all
            "other numbers". So, yes, this method is not really finding the volume. But a relative volume-like measure. It
            uses the magnitude of the determinant as the volume stand-in following the Cayley-Menger theorem.
            </summary>
            <param name="edgeVectors">The edge vectors.</param>
            <param name="lastIndex">The last index.</param>
            <param name="bigNumber">The big number.</param>
            <returns>System.Double.</returns>
        </member>
        <member name="M:MIConvexHull.MathHelper.DeterminantDestructive(System.Double[])">
            <summary>
            Determinants the destructive.
            </summary>
            <param name="A">a.</param>
            <returns>System.Double.</returns>
        </member>
        <member name="M:MIConvexHull.MathHelper.LUFactor(System.Double[],System.Int32,System.Int32[],System.Double[])">
            <summary>
            Lus the factor.
            </summary>
            <param name="data">The data.</param>
            <param name="order">The order.</param>
            <param name="ipiv">The ipiv.</param>
            <param name="vecLUcolj">The vec l ucolj.</param>
        </member>
        <member name="T:MIConvexHull.ObjectManager">
            <summary>
            A helper class for object allocation/storage.
            This helps the GC a lot as it prevents the creation of about 75% of
            new face objects (in the case of ConvexFaceInternal). In the case of
            FaceConnectors and DefferedFaces, the difference is even higher (in most
            cases O(1) vs O(number of created faces)).
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.Dimension">
            <summary>
            The dimension
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.ConnectorStack">
            <summary>
            The connector stack
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.DeferredFaceStack">
            <summary>
            The deferred face stack
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.EmptyBufferStack">
            <summary>
            The empty buffer stack
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.FacePool">
            <summary>
            The face pool
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.FacePoolSize">
            <summary>
            The face pool size
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.FacePoolCapacity">
            <summary>
            The face pool capacity
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.FreeFaceIndices">
            <summary>
            The free face indices
            </summary>
        </member>
        <member name="F:MIConvexHull.ObjectManager.Hull">
            <summary>
            The hull
            </summary>
        </member>
        <member name="M:MIConvexHull.ObjectManager.#ctor(MIConvexHull.ConvexHullAlgorithm)">
            <summary>
            Create the manager.
            </summary>
            <param name="hull">The hull.</param>
        </member>
        <member name="M:MIConvexHull.ObjectManager.DepositFace(System.Int32)">
            <summary>
            Return the face to the pool for later use.
            </summary>
            <param name="faceIndex">Index of the face.</param>
        </member>
        <member name="M:MIConvexHull.ObjectManager.ReallocateFacePool">
            <summary>
            Reallocate the face pool, including the AffectedFaceFlags
            </summary>
        </member>
        <member name="M:MIConvexHull.ObjectManager.CreateFace">
            <summary>
            Create a new face and put it in the pool.
            </summary>
            <returns>System.Int32.</returns>
        </member>
        <member name="M:MIConvexHull.ObjectManager.GetFace">
            <summary>
            Return index of an unused face or creates a new one.
            </summary>
            <returns>System.Int32.</returns>
        </member>
        <member name="M:MIConvexHull.ObjectManager.DepositConnector(MIConvexHull.FaceConnector)">
            <summary>
            Store a face connector in the "embedded" linked list.
            </summary>
            <param name="connector">The connector.</param>
        </member>
        <member name="M:MIConvexHull.ObjectManager.GetConnector">
            <summary>
            Get an unused face connector. If none is available, create it.
            </summary>
            <returns>FaceConnector.</returns>
        </member>
        <member name="M:MIConvexHull.ObjectManager.DepositVertexBuffer(MIConvexHull.IndexBuffer)">
            <summary>
            Deposit the index buffer.
            </summary>
            <param name="buffer">The buffer.</param>
        </member>
        <member name="M:MIConvexHull.ObjectManager.GetVertexBuffer">
            <summary>
            Get a store index buffer or create a new instance.
            </summary>
            <returns>IndexBuffer.</returns>
        </member>
        <member name="M:MIConvexHull.ObjectManager.DepositDeferredFace(MIConvexHull.DeferredFace)">
            <summary>
            Deposit the deferred face.
            </summary>
            <param name="face">The face.</param>
        </member>
        <member name="M:MIConvexHull.ObjectManager.GetDeferredFace">
            <summary>
            Get the deferred face.
            </summary>
            <returns>DeferredFace.</returns>
        </member>
        <member name="T:MIConvexHull.DelaunayTriangulation`2">
            <summary>
            Calculation and representation of Delaunay triangulation.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <seealso cref="T:MIConvexHull.ITriangulation`2" />
        </member>
        <member name="M:MIConvexHull.DelaunayTriangulation`2.#ctor">
            <summary>
            Can only be created using a factory method.
            </summary>
        </member>
        <member name="P:MIConvexHull.DelaunayTriangulation`2.Cells">
            <summary>
            Cells of the triangulation.
            </summary>
            <value>The cells.</value>
        </member>
        <member name="M:MIConvexHull.DelaunayTriangulation`2.Create(System.Collections.Generic.IList{`0})">
            <summary>
            Creates the Delaunay triangulation of the input data.
            </summary>
            <param name="data">The data.</param>
            <returns>DelaunayTriangulation<TVertex, TCell>.</returns>
            <exception cref="T:System.ArgumentNullException">data</exception>
            <exception cref="T:System.ArgumentNullException">data</exception>
        </member>
        <member name="T:MIConvexHull.ITriangulation`2">
            <summary>
            Simple interface to unify different types of triangulations in the future.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
        </member>
        <member name="P:MIConvexHull.ITriangulation`2.Cells">
            <summary>
            Triangulation simplexes. For 2D - triangles, 3D - tetrahedrons, etc ...
            </summary>
            <value>The cells.</value>
        </member>
        <member name="T:MIConvexHull.Triangulation">
            <summary>
            Factory class for creating triangulations.
            </summary>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateDelaunay``1(System.Collections.Generic.IList{``0})">
            <summary>
            Creates the Delaunay triangulation of the input data.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <param name="data">The data.</param>
            <returns>ITriangulation<TVertex, DefaultTriangulationCell<TVertex>>.</returns>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateDelaunay(System.Collections.Generic.IList{System.Double[]})">
            <summary>
            Creates the Delaunay triangulation of the input data.
            </summary>
            <param name="data">The data.</param>
            <returns>ITriangulation<DefaultVertex, DefaultTriangulationCell<DefaultVertex>>.</returns>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateDelaunay``2(System.Collections.Generic.IList{``0})">
            <summary>
            Creates the Delaunay triangulation of the input data.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TFace">The type of the t face.</typeparam>
            <param name="data">The data.</param>
            <returns>ITriangulation<TVertex, TFace>.</returns>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateVoronoi``3(System.Collections.Generic.IList{``0})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <typeparam name="TEdge">The type of the t edge.</typeparam>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, TCell, TEdge>.</returns>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateVoronoi``1(System.Collections.Generic.IList{``0})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, DefaultTriangulationCell<TVertex>, VoronoiEdge<TVertex, DefaultTriangulationCell<TVertex>>>.</returns>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateVoronoi(System.Collections.Generic.IList{System.Double[]})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<DefaultVertex, DefaultTriangulationCell<DefaultVertex>, VoronoiEdge<DefaultVertex, DefaultTriangulationCell<DefaultVertex>>>.</returns>
        </member>
        <member name="M:MIConvexHull.Triangulation.CreateVoronoi``2(System.Collections.Generic.IList{``0})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, TCell, VoronoiEdge<TVertex, TCell>>.</returns>
        </member>
        <member name="T:MIConvexHull.TriangulationCell`2">
            <summary>
            Representation of the triangulation cell. Pretty much the same as ConvexFace,
            just wanted to distinguish the two.
            To declare your own face type, use class Face : DelaunayFace(of Vertex, of Face)
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <seealso cref="T:MIConvexHull.ConvexFace`2" />
        </member>
        <member name="T:MIConvexHull.DefaultTriangulationCell`1">
            <summary>
            Default triangulation cell.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
        </member>
        <member name="T:MIConvexHull.VoronoiEdge`2">
            <summary>
            A class representing an (undirected) edge of the Voronoi graph.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
        </member>
        <member name="M:MIConvexHull.VoronoiEdge`2.#ctor">
            <summary>
            Create an instance of the edge.
            </summary>
        </member>
        <member name="M:MIConvexHull.VoronoiEdge`2.#ctor(`1,`1)">
            <summary>
            Create an instance of the edge.
            </summary>
            <param name="source">The source.</param>
            <param name="target">The target.</param>
        </member>
        <member name="P:MIConvexHull.VoronoiEdge`2.Source">
            <summary>
            Source of the edge.
            </summary>
            <value>The source.</value>
        </member>
        <member name="P:MIConvexHull.VoronoiEdge`2.Target">
            <summary>
            Target of the edge.
            </summary>
            <value>The target.</value>
        </member>
        <member name="M:MIConvexHull.VoronoiEdge`2.Equals(System.Object)">
            <summary>
            ...
            </summary>
            <param name="obj">The object to compare with the current object.</param>
            <returns><c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:MIConvexHull.VoronoiEdge`2.GetHashCode">
            <summary>
            ...
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="T:MIConvexHull.VoronoiMesh">
            <summary>
            A factory class for creating a Voronoi mesh.
            </summary>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh.Create``3(System.Collections.Generic.IList{``0})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <typeparam name="TEdge">The type of the t edge.</typeparam>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, TCell, TEdge>.</returns>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh.Create``1(System.Collections.Generic.IList{``0})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, DefaultTriangulationCell<TVertex>, VoronoiEdge<TVertex, DefaultTriangulationCell<TVertex>>>.</returns>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh.Create(System.Collections.Generic.IList{System.Double[]})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<DefaultVertex, DefaultTriangulationCell<DefaultVertex>, VoronoiEdge<DefaultVertex, DefaultTriangulationCell<DefaultVertex>>>.</returns>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh.Create``2(System.Collections.Generic.IList{``0})">
            <summary>
            Create the voronoi mesh.
            </summary>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, TCell, VoronoiEdge<TVertex, TCell>>.</returns>
        </member>
        <member name="T:MIConvexHull.VoronoiMesh`3">
            <summary>
            A representation of a voronoi mesh.
            </summary>
            <typeparam name="TEdge">The type of the t edge.</typeparam>
            <typeparam name="TVertex">The type of the t vertex.</typeparam>
            <typeparam name="TCell">The type of the t cell.</typeparam>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh`3.#ctor">
            <summary>
            Can only be created using a factory method.
            </summary>
        </member>
        <member name="P:MIConvexHull.VoronoiMesh`3.Vertices">
            <summary>
            Vertices of the diagram.
            </summary>
            <value>The vertices.</value>
        </member>
        <member name="P:MIConvexHull.VoronoiMesh`3.Edges">
            <summary>
            Edges connecting the cells.
            The same information can be retrieved Cells' Adjacency.
            </summary>
            <value>The edges.</value>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh`3.Create(System.Collections.Generic.IList{`0})">
            <summary>
            Create a Voronoi diagram of the input data.
            </summary>
            <param name="data">The data.</param>
            <returns>VoronoiMesh<TVertex, TCell, TEdge>.</returns>
            <exception cref="T:System.ArgumentNullException">data</exception>
            <exception cref="T:System.ArgumentNullException">data</exception>
        </member>
        <member name="T:MIConvexHull.VoronoiMesh`3.EdgeComparer">
            <summary>
            This is probably not needed, but might make things a tiny bit faster.
            </summary>
            <seealso cref="T:System.Collections.Generic.IEqualityComparer`1" />
        </member>
        <member name="M:MIConvexHull.VoronoiMesh`3.EdgeComparer.Equals(`2,`2)">
            <summary>
            Equalses the specified x.
            </summary>
            <param name="x">The x.</param>
            <param name="y">The y.</param>
            <returns>System.Boolean.</returns>
        </member>
        <member name="M:MIConvexHull.VoronoiMesh`3.EdgeComparer.GetHashCode(`2)">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> for which a hash code is to be returned.</param>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
    </members>
</doc>

redpajama_set_name: RedPajamaGithub


NEWBURGH – Leave it to late, great Castle High School football coach John Lidy to lay it on the line.
"We used to have lunch duty together and we would ask coach Lidy why would he have a running back carry the ball 35 to 40 times a game," said Castle boys' basketball coach Brian Gibson. "He would say, 'the ball isn't heavy.' It's the same thing with basketball. The ball isn't heavy."
Gibson was referring to Castle's lack of depth.
"We have several guys playing 28 to 29 minutes and that's not good for the long haul," he said.
Gibson has to find a way to develop more depth in the absence of part-time starter Conner Lockyear and sixth man Jasper Heubner.
'Conner first hurt his back his junior year playing football," Gibson said. "He's played with it for over a year. He has two herniated discs in his back. We've known about it for a while. He's tried to play through the pain. Finally it got to be too much for him. He'll be ready for the sectional."
Heubner had arthroscopic knee surgery on Dec. 28. He has been cleared to practice, but Gibson doesn't expect him to see action in the Southern Indiana Athletic Conference tournament.
When in doubt, go to old faithful. In Castle's eyes, that's its halfcourt zone trap. Alex Hemenway's quick hands were seemingly everywhere in the second quarter, sending Memorial into a panic and catapulting the host Knights to a 72-43 romp on Friday night.
"We see it every day in practice," Gibson said. "It's still amazing to watch. We really asserted ourselves at the defensive end."
Hemenway was 5-for-6 from 3-point range in scoring a game-high 25 points.
Hemenway had two dunks, one in which he softly hung on the rim for a moment for emphasis.
"I have to work on that," he said, laughing, when asked why he dunked so politely.
Although it's still early, the Knights (8-2 overall) moved into the driver's seat in the SIAC race at 3-0 in the league. Bosse, Reitz and Harrison are tied for second at 2-1.
Branson Combs led undermanned Memorial (6-4, 1-1) with 14 points, bulling his way to the basket like he was still running after the catch in football. The Tigers played without starting guards Michael Lindauer and Danny Dixon, who were sidelined with ankle injuries.
But Castle wasn't about to be complacent in their absence.
"No. Our game plan was the same, to go out there and dominate," said Knights guard Isaiah Swope. "We do what coach asks us to do."
Castle will play at North in the first round at 7 p.m. on Tuesday while Memorial hosts Reitz. The Knights and Tigers prepped for the SIAC tourney with road games Saturday night at Tell City and Gibson Southern, respectively.
When the season began, Hemenway was the lone returning starter from a 16-8 team. Everyone knew he was an Indiana Junior All-Star who later signed with Clemson. But how much help he received would determine whether the Knights could contend for the SIAC title.
Hemenway found another gear in earning IBCA/Subway Player of the Week honors, scoring 28 and 36 points in a pair of victories in the Wooden Classic at Martinsville. He was ably complemented by sophomores Swope and Bob Nunge against Memorial. Swope scored 11 of his 18 points in the second half and dished out nine assists. Nunge scored 10 of his career-high 16 points in the first half, finishing 4-for-6 beyond the arc.
"That was two games in a row where they left Bob wide open," Gibson said.
Nunge, the third child from one of the most talented athletic families in Castle history, is beginning to carve his own niche.
"Bob is everything and more," Hemenway said. "He just had to get comfortable and is showing the player he is. He came out and had a huge night for us."
As opponents packed it in trying to keep Hemenway and Swope out of the lane, Nunge made them pay dearly.
"I've said all along that it would take until January for our sophomores to be ready for varsity ball," Gibson said.
Swope loves to run the show with Hemenway's help.
"Alex is a great teammate," he said. "He's good to have. He's a great shooter. He can catch and shoot off the drive. We're clicking together also. He's a great leader the way he carries himself on the court. He never gets down on himself. He plays hard the whole game."
As for Swope, when he's able to use his mercurial quickness, he can make opposing guards look silly. But against superior and equally quick opponents such as Floyd Central and Indianapolis Cathedral, he has struggled. Floyd Central, currently ranked No. 3 in Class 4A, routed Castle 69-43 in the second game of the season. Cathedral, ranked No. 6 in 4A, pounded the Knights 78-54 on Dec. 22.
"We lost to two top 10 teams," Swope said. "We knew what to expect after those two games."
Gibson said Castle was too passive against Cathedral and has made a concerted effort to become more aggressive.
"When you drive and kick for wide-open 3s, good things happen," Gibson said.
Because of the SIAC tournament, some local 4A schools face each other three times in a season. Familiarity breeds respect.
"Anytime you have a chance to play for a championship, you put your best foot forward," Gibson said. "It's certainly a mini-sectional."
Once regarded as primarily a football school, Castle's basketball tradition continues to perpetuate itself.
"We have a really good feeder program and great feeder league coaches," Gibson said. "The kids work hard and deserve success."